From c0bea347a9fa1ca49d85da414adcc2e0426190f4 Mon Sep 17 00:00:00 2001 From: Charles Dang Date: Mon, 24 Jul 2017 15:14:08 +1100 Subject: [PATCH] Allow render_target_setter to restore the last target when destroyed --- src/sdl/render_utils.hpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/sdl/render_utils.hpp b/src/sdl/render_utils.hpp index f87841072a30..a990c5eeac02 100644 --- a/src/sdl/render_utils.hpp +++ b/src/sdl/render_utils.hpp @@ -24,18 +24,19 @@ /** * Sets the renderer output target to the specified texture. - * @todo: add support for restoring last target. */ class render_target_setter { public: explicit render_target_setter(texture& t) : renderer_(CVideo::get_singleton().get_renderer()) + , last_target_(nullptr) { if(renderer_) { // Validate we can render to this texture. assert(t.get_info().access == SDL_TEXTUREACCESS_TARGET); + last_target_ = SDL_GetRenderTarget(renderer_); SDL_SetRenderTarget(renderer_, t); } } @@ -43,12 +44,13 @@ class render_target_setter ~render_target_setter() { if(renderer_) { - SDL_SetRenderTarget(renderer_, nullptr); + SDL_SetRenderTarget(renderer_, last_target_); } } private: SDL_Renderer* renderer_; + SDL_Texture* last_target_; // TODO: use the texture wrapper? }; using sdl_rect_getter = void (*)(SDL_Renderer*, SDL_Rect*);