From 2cfc83eab775327dc275a356d43cfc6fe32d7ad2 Mon Sep 17 00:00:00 2001 From: pionere Date: Sat, 22 Jan 2022 17:10:37 +0100 Subject: [PATCH] sync D3D_RenderReadPixels with D3D11_RenderReadPixels - use the result of SDL_ConvertPixels to propagate error - get rid of the verbose error message of D3D11_RenderReadPixels in case SDL_ConvertPixels failed --- src/render/direct3d/SDL_render_d3d.c | 5 +++-- src/render/direct3d11/SDL_render_d3d11.c | 14 ++------------ 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/src/render/direct3d/SDL_render_d3d.c b/src/render/direct3d/SDL_render_d3d.c index ec986b345..f43e3ff1d 100644 --- a/src/render/direct3d/SDL_render_d3d.c +++ b/src/render/direct3d/SDL_render_d3d.c @@ -1271,6 +1271,7 @@ D3D_RenderReadPixels(SDL_Renderer * renderer, const SDL_Rect * rect, RECT d3drect; D3DLOCKED_RECT locked; HRESULT result; + int status; if (data->currentRenderTarget) { backBuffer = data->currentRenderTarget; @@ -1305,7 +1306,7 @@ D3D_RenderReadPixels(SDL_Renderer * renderer, const SDL_Rect * rect, return D3D_SetError("LockRect()", result); } - SDL_ConvertPixels(rect->w, rect->h, + status = SDL_ConvertPixels(rect->w, rect->h, D3DFMTToPixelFormat(desc.Format), locked.pBits, locked.Pitch, format, pixels, pitch); @@ -1313,7 +1314,7 @@ D3D_RenderReadPixels(SDL_Renderer * renderer, const SDL_Rect * rect, IDirect3DSurface9_Release(surface); - return 0; + return status; } static void diff --git a/src/render/direct3d11/SDL_render_d3d11.c b/src/render/direct3d11/SDL_render_d3d11.c index dcab009c2..2f359cfe4 100644 --- a/src/render/direct3d11/SDL_render_d3d11.c +++ b/src/render/direct3d11/SDL_render_d3d11.c @@ -2235,30 +2235,20 @@ D3D11_RenderReadPixels(SDL_Renderer * renderer, const SDL_Rect * rect, /* Copy the data into the desired buffer, converting pixels to the * desired format at the same time: */ - if (SDL_ConvertPixels( + status = SDL_ConvertPixels( rect->w, rect->h, D3D11_DXGIFormatToSDLPixelFormat(stagingTextureDesc.Format), textureMemory.pData, textureMemory.RowPitch, format, pixels, - pitch) != 0) { - /* When SDL_ConvertPixels fails, it'll have already set the format. - * Get the error message, and attach some extra data to it. - */ - char errorMessage[1024]; - SDL_snprintf(errorMessage, sizeof(errorMessage), "%s, Convert Pixels failed: %s", __FUNCTION__, SDL_GetError()); - SDL_SetError("%s", errorMessage); - goto done; - } + pitch); /* Unmap the texture: */ ID3D11DeviceContext_Unmap(data->d3dContext, (ID3D11Resource *)stagingTexture, 0); - status = 0; - done: SAFE_RELEASE(backBuffer); SAFE_RELEASE(stagingTexture);