From 07f01bd7344b261ccf304d2583276ca72e381378 Mon Sep 17 00:00:00 2001 From: Thomas Geymayer Date: Sun, 10 Mar 2013 20:43:04 +0100 Subject: [PATCH] Ensure immediate canvas update inside GUI windows. 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 | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/Canvas/window.cxx b/src/Canvas/window.cxx index d0d72f509..80ef5677e 100644 --- a/src/Canvas/window.cxx +++ b/src/Canvas/window.cxx @@ -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 ) -- 2.39.5