Mercurial > hg > orthanc-stone
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);