diff Framework/Scene2D/Internals/OpenGLColorTextureRenderer.cpp @ 947:1091b2adeb5a toa2019081001

Fixed animation frame stopping when returning false + big work on the OpenGL objects to make them lost context-safe + debug code to forcefully tag a context as lost + debug macros
author Benjamin Golinvaux <bgo@osimis.io>
date Sat, 10 Aug 2019 13:07:31 +0200
parents 6e888cf6a48b
children 2d8ab34c8c91
line wrap: on
line diff
--- a/Framework/Scene2D/Internals/OpenGLColorTextureRenderer.cpp	Tue Aug 06 15:07:23 2019 +0200
+++ b/Framework/Scene2D/Internals/OpenGLColorTextureRenderer.cpp	Sat Aug 10 13:07:31 2019 +0200
@@ -27,13 +27,16 @@
   {
     void OpenGLColorTextureRenderer::LoadTexture(const ColorTextureSceneLayer& layer)
     {
-      context_.MakeCurrent();
-      texture_.reset(new OpenGL::OpenGLTexture);
-      texture_->Load(layer.GetTexture(), layer.IsLinearInterpolation());
-      layerTransform_ = layer.GetTransform();
+      if (!context_.IsContextLost())
+      {
+        context_.MakeCurrent();
+        texture_.reset(new OpenGL::OpenGLTexture(context_));
+        texture_->Load(layer.GetTexture(), layer.IsLinearInterpolation());
+        layerTransform_ = layer.GetTransform();
+      }
     }
 
-    
+
     OpenGLColorTextureRenderer::OpenGLColorTextureRenderer(OpenGL::IOpenGLContext& context,
                                                            OpenGLColorTextureProgram& program,
                                                            const ColorTextureSceneLayer& layer) :
@@ -48,7 +51,7 @@
                                             unsigned int canvasWidth,
                                             unsigned int canvasHeight)
     {
-      if (texture_.get() != NULL)
+      if (!context_.IsContextLost() && texture_.get() != NULL)
       {
         program_.Apply(*texture_, AffineTransform2D::Combine(transform, layerTransform_), true);
       }