diff --git a/scene_xrender.cpp b/scene_xrender.cpp index 42a4c1768f..427e3e9cac 100644 --- a/scene_xrender.cpp +++ b/scene_xrender.cpp @@ -166,14 +166,16 @@ void SceneXrender::paintTransformedScreen( int orig_mask ) --i ) { Window* w = static_cast< Window* >( stacking_order[ i ] ); - if( !w->isVisible()) - continue; if( region.isEmpty()) // completely clipped continue; int mask = orig_mask | ( w->isOpaque() ? PAINT_WINDOW_OPAQUE : PAINT_WINDOW_TRANSLUCENT ); + if( !w->isVisible()) + mask |= PAINT_WINDOW_DISABLED; QRegion damage = region; // preparation step effects->prePaintWindow( effectWindow( w ), &mask, &damage, time_diff ); + if( mask & PAINT_WINDOW_DISABLED ) + continue; // If the window is transparent, the transparent part will be done // in the 2nd pass. if( mask & PAINT_WINDOW_TRANSLUCENT )