diff Framework/Scene2D/Internals/OpenGLInfoPanelRenderer.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/OpenGLInfoPanelRenderer.cpp	Tue Aug 06 15:07:23 2019 +0200
+++ b/Framework/Scene2D/Internals/OpenGLInfoPanelRenderer.cpp	Sat Aug 10 13:07:31 2019 +0200
@@ -27,18 +27,21 @@
   {
     void OpenGLInfoPanelRenderer::LoadTexture(const InfoPanelSceneLayer& layer)
     {
-      context_.MakeCurrent();
-      texture_.reset(new OpenGL::OpenGLTexture);
-      texture_->Load(layer.GetTexture(), layer.IsLinearInterpolation());
-      anchor_ = layer.GetAnchor();
+      if (!context_.IsContextLost())
+      {
+        context_.MakeCurrent();
+        texture_.reset(new OpenGL::OpenGLTexture(context_));
+        texture_->Load(layer.GetTexture(), layer.IsLinearInterpolation());
+        anchor_ = layer.GetAnchor();
+      }
     }
 
-
     OpenGLInfoPanelRenderer::OpenGLInfoPanelRenderer(OpenGL::IOpenGLContext& context,
                                                      OpenGLColorTextureProgram& program,
                                                      const InfoPanelSceneLayer& layer) :
       context_(context),
-      program_(program)
+      program_(program),
+      anchor_(BitmapAnchor_TopLeft)
     {
       LoadTexture(layer);
     }
@@ -48,9 +51,9 @@
                                          unsigned int canvasWidth,
                                          unsigned int canvasHeight)
     {
-      if (texture_.get() != NULL)
+      if (!context_.IsContextLost() && texture_.get() != NULL)
       {
-        int dx, dy;
+        int dx = 0, dy = 0;
         InfoPanelSceneLayer::ComputeAnchorLocation(
           dx, dy, anchor_, texture_->GetWidth(), texture_->GetHeight(),
           canvasWidth, canvasHeight);