diff --git a/include/SDL_render.h b/include/SDL_render.h index aca3065b9..0694540b5 100644 --- a/include/SDL_render.h +++ b/include/SDL_render.h @@ -413,10 +413,21 @@ extern DECLSPEC SDL_bool SDLCALL SDL_RenderTargetSupported(SDL_Renderer *rendere * \param texture The targeted texture, which must be created with the SDL_TEXTUREACCESS_TARGET flag, or NULL for the default render target * * \return 0 on success, or -1 on error + * + * \sa SDL_GetRenderTarget() */ extern DECLSPEC int SDLCALL SDL_SetRenderTarget(SDL_Renderer *renderer, SDL_Texture *texture); +/** + * \brief Get the current render target or NULL for the default render target. + * + * \return The current render target + * + * \sa SDL_SetRenderTarget() + */ +extern DECLSPEC SDL_Texture * SDLCALL SDL_GetRenderTarget(SDL_Renderer *renderer); + /** * \brief Set device independent resolution for rendering * diff --git a/src/render/SDL_render.c b/src/render/SDL_render.c index f25b8b950..8c2bdf38f 100644 --- a/src/render/SDL_render.c +++ b/src/render/SDL_render.c @@ -952,6 +952,12 @@ SDL_SetRenderTarget(SDL_Renderer *renderer, SDL_Texture *texture) return 0; } +SDL_Texture * +SDL_GetRenderTarget(SDL_Renderer *renderer) +{ + return renderer->target; +} + static int UpdateLogicalSize(SDL_Renderer *renderer) { @@ -961,7 +967,9 @@ UpdateLogicalSize(SDL_Renderer *renderer) float scale; SDL_Rect viewport; - if (renderer->window) { + if (renderer->target) { + SDL_QueryTexture(renderer->target, NULL, NULL, &w, &h); + } else if (renderer->window) { SDL_GetWindowSize(renderer->window, &w, &h); } else { /* FIXME */