]> git.mxchange.org Git - flightgear.git/commitdiff
Ensure immediate canvas update inside GUI windows.
authorThomas Geymayer <tomgey@gmail.com>
Sun, 10 Mar 2013 19:43:04 +0000 (20:43 +0100)
committerThomas Geymayer <tomgey@gmail.com>
Sun, 10 Mar 2013 19:43:14 +0000 (20:43 +0100)
Ensure canvas displayed inside GUI windows are updated in the same
frame as the according window is made visible. This prevents
showing previous contents for the first frame.

src/Canvas/window.cxx

index d0d72f509077262f9346908178e587b8b6ed2dc0..80ef5677e9e34f5f64c04dd1a1e3a8f68ad4e3ba 100644 (file)
@@ -79,6 +79,17 @@ namespace canvas
         _capture_events = node->getBoolValue();
       else
         handled = false;
+
+      // Ensure canvas is redrawn before the window is displayed after it has
+      // been hidden. We can't rely on the cull callback as it gets called too
+      // late (GUI camera is attached as POST_RENDER whereas canvas contents are
+      // rendered during PRE_RENDER).
+      if( node->getNameString() == "visible" && node->getBoolValue() )
+      {
+        simgear::canvas::CanvasPtr canvas = getCanvas().lock();
+        if( canvas )
+          canvas->enableRendering();
+      }
     }
 
     if( !handled )