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 )