From f92a94ef019b8f9a43ce8af91b06d59f12930e5c Mon Sep 17 00:00:00 2001 From: zv0n Date: Sun, 31 Jan 2021 15:56:47 +0100 Subject: [PATCH] SDLPP: Don't save textures before render Since textures should only be manipulated in the main thread (as well as rendering), let programmers deal with ensuring the texture is available during rendercopy --- sdlpp/sdlpp_renderobject.cpp | 3 --- sdlpp/sdlpp_renderobject.hpp | 2 +- sdlpp/sdlpp_scene.cpp | 4 +--- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/sdlpp/sdlpp_renderobject.cpp b/sdlpp/sdlpp_renderobject.cpp index 8ea8045..b462c05 100644 --- a/sdlpp/sdlpp_renderobject.cpp +++ b/sdlpp/sdlpp_renderobject.cpp @@ -119,7 +119,4 @@ void RenderObject::copyTo( std::shared_ptr< RenderObject > other ) { } other->colidedWith.clear(); } -void RenderObject::saveCurTexture() { - cur_texture = texture; -} } // namespace SDLPP diff --git a/sdlpp/sdlpp_renderobject.hpp b/sdlpp/sdlpp_renderobject.hpp index e55a43e..6ed08bf 100644 --- a/sdlpp/sdlpp_renderobject.hpp +++ b/sdlpp/sdlpp_renderobject.hpp @@ -16,6 +16,7 @@ class SDLPPSCOPE RenderObject { public: RenderObject( const std::shared_ptr< Renderer > &r ) : renderer( r ) {} virtual ~RenderObject() {} + // TODO maybe do basic render() that all descandants can inherit? virtual void render() = 0; virtual int leftmost() = 0; virtual int topmost() = 0; @@ -78,7 +79,6 @@ public: bool isStatic(); void setStatic( bool stat = true ); std::shared_ptr< Renderer > getRenderer() const; - void saveCurTexture(); protected: virtual void copyTo( std::shared_ptr< RenderObject > other ); diff --git a/sdlpp/sdlpp_scene.cpp b/sdlpp/sdlpp_scene.cpp index 1b6c8ea..4fcf976 100644 --- a/sdlpp/sdlpp_scene.cpp +++ b/sdlpp/sdlpp_scene.cpp @@ -120,10 +120,8 @@ void Scene::renderScene( bool clear_renderer ) { if ( background && background->getTexturePtr() ) SDL_RenderCopy( renderer->getRendererPtr(), background->getTexturePtr(), NULL, NULL ); - for ( const auto &x : render_objects ) { - x->saveCurTexture(); + for ( const auto &x : render_objects ) x->render(); - } } void Scene::presentScene() { SDL_RenderPresent( renderer->getRendererPtr() );