diff OrthancStone/Sources/Viewport/SdlViewport.cpp @ 1576:92fca2b3ba3d

sanitizing the handling of canvas size
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 24 Sep 2020 16:40:30 +0200
parents 85e117739eca
children
line wrap: on
line diff
--- a/OrthancStone/Sources/Viewport/SdlViewport.cpp	Wed Sep 23 17:25:25 2020 +0200
+++ b/OrthancStone/Sources/Viewport/SdlViewport.cpp	Thu Sep 24 16:40:30 2020 +0200
@@ -52,6 +52,7 @@
     compositor_.reset(compositor);
   }
 
+
   SdlViewport::SdlViewport()
   {
     refreshEvent_ = SDL_RegisterEvents(1);
@@ -76,6 +77,14 @@
   }
 
   
+  void SdlViewport::UpdateSize(unsigned int width, unsigned int height)
+  {
+    SdlLock lock(*this);
+    lock.GetCompositor().SetCanvasSize(width, height);
+    lock.Invalidate();
+  }
+
+
   SdlOpenGLViewport::SdlOpenGLViewport(const std::string& title,
                                        unsigned int width,
                                        unsigned int height,
@@ -85,6 +94,13 @@
     AcquireCompositor(new OpenGLCompositor(context_));  // (*)
   }
 
+
+  void SdlOpenGLViewport::RefreshCanvasSize()
+  {
+    UpdateSize(context_.GetCanvasWidth(), context_.GetCanvasHeight());
+  }
+
+
   boost::shared_ptr<SdlOpenGLViewport> SdlOpenGLViewport::Create(
     const std::string& title,
     unsigned int width,
@@ -120,14 +136,6 @@
   }
 
 
-  void SdlOpenGLViewport::UpdateSize(unsigned int width, unsigned int height)
-  {
-    // nothing to do in OpenGL, the OpenGLCompositor::UpdateSize will be called automatically
-    SdlLock lock(*this);
-    lock.Invalidate();
-  }
-
-
   void SdlOpenGLViewport::ToggleMaximize()
   {
     // No need to call "Invalidate()" here, as "UpdateSize()" will
@@ -138,6 +146,11 @@
 
 
 
+  void SdlCairoViewport::RefreshCanvasSize()
+  {
+    UpdateSize(window_.GetWidth(), window_.GetHeight());
+  }
+
   SdlCairoViewport::SdlCairoViewport(const char* title,
                                      unsigned int width,
                                      unsigned int height,
@@ -177,15 +190,6 @@
   }
 
 
-  void SdlCairoViewport::UpdateSize(unsigned int width,
-                                    unsigned int height)
-  {
-    SdlLock lock(*this);
-    dynamic_cast<CairoCompositor&>(lock.GetCompositor()).UpdateSize(width, height);
-    lock.Invalidate();
-  }
-  
-
   void SdlCairoViewport::ToggleMaximize()
   {
     // No need to call "Invalidate()" here, as "UpdateSize()" will