Index: xfce4-session/xfsm-fadeout.c =================================================================== --- xfce4-session/xfsm-fadeout.c (revision 22110) +++ xfce4-session/xfsm-fadeout.c (working copy) @@ -145,7 +145,21 @@ g_free (fadeout); } +void +xfsm_fadeout_refresh (XfsmFadeout *fadeout) +{ + FoScreen *screen; + GList *lp; + for (lp = fadeout->screens; lp != NULL; lp = lp->next) + { + screen = lp->data; + + gdk_window_clear (screen->window); + } +} + + static void xfsm_fadeout_drawable_mono (XfsmFadeout *fadeout, GdkDrawable *drawable) Index: xfce4-session/xfsm-fadeout.h =================================================================== --- xfce4-session/xfsm-fadeout.h (revision 22110) +++ xfce4-session/xfsm-fadeout.h (working copy) @@ -30,6 +30,7 @@ typedef struct _XfsmFadeout XfsmFadeout; XfsmFadeout *xfsm_fadeout_new (GdkDisplay *display); +void xfsm_fadeout_refresh (XfsmFadeout *fadeout); void xfsm_fadeout_destroy (XfsmFadeout *fadeout); G_END_DECLS; Index: xfce4-session/shutdown.c =================================================================== --- xfce4-session/shutdown.c (revision 22110) +++ xfce4-session/shutdown.c (working copy) @@ -168,6 +168,7 @@ XfceKiosk *kiosk; gboolean kiosk_can_shutdown; XfceRc *rc; + GList *lp; #ifdef SESSION_SCREENSHOTS GdkRectangle screenshot_area; GdkWindow *root; @@ -433,6 +434,19 @@ if (!accessibility) xfsm_window_grab_input (GTK_WINDOW (dialog)); + /* + * Note (Olivier): + * Some compositors, such as the one in xfwm4, unredirect + * fullscreen override-redirect windows, and that causes + * a unmap/map event which clears the fadeout window. + * The following portion of code aimed at processing + * all pending events and clears the window to force + * a redraw. + */ + while(gtk_events_pending()) + gtk_main_iteration(); + xfsm_fadeout_refresh (fadeout); + /* run the logout dialog */ result = gtk_dialog_run (GTK_DIALOG(dialog));