[Xfce4-commits] <xfdesktop:xfce-4.8> Stop altering the root window pixmap to avoid X crash (bug #7442).

Nick Schermer noreply at xfce.org
Fri Apr 22 19:56:01 CEST 2011


Updating branch refs/heads/xfce-4.8
         to f617b22069ed734ce322a675aac2979802f40ee4 (commit)
       from 94a6f623b6b80442c6d4d6335e85398f058f69ce (commit)

commit f617b22069ed734ce322a675aac2979802f40ee4
Author: Nick Schermer <nick at xfce.org>
Date:   Fri Apr 22 18:55:35 2011 +0200

    Stop altering the root window pixmap to avoid X crash (bug #7442).
    
    Altering the back pixmap makes X segfault, sometimes on startup
    of xfdesktop, all the time during logout. Not the best solution
    to fix it this way, but the background is still shown when
    xfdesktop is running, so not a big issue.
    
    (cherry picked from commit bf07cc01b5457067303bdfad93433def548b6172)

 src/xfce-desktop.c |   17 +++++++++++++----
 1 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/src/xfce-desktop.c b/src/xfce-desktop.c
index f507132..77d88ab 100644
--- a/src/xfce-desktop.c
+++ b/src/xfce-desktop.c
@@ -275,6 +275,7 @@ static void
 set_real_root_window_pixmap(GdkScreen *gscreen,
                             GdkPixmap *pmap)
 {
+#if 0 /* see bug #7442 */
     Window xid;
     GdkWindow *groot;
     
@@ -296,8 +297,9 @@ set_real_root_window_pixmap(GdkScreen *gscreen,
     /* and set the root window's BG pixmap, because aterm is somewhat lame. */
     gdk_window_set_back_pixmap(groot, pmap, FALSE);
     /* there really should be a standard for this crap... */
-    
+
     gdk_error_trap_pop();
+#endif
 }
 
 static void
@@ -807,15 +809,19 @@ xfce_desktop_unrealize(GtkWidget *widget)
             G_CALLBACK(screen_size_changed_cb), desktop);
     g_signal_handlers_disconnect_by_func(G_OBJECT(desktop->priv->gscreen),
             G_CALLBACK(screen_composited_changed_cb), desktop);
+
+    gdk_error_trap_push();
     
     groot = gdk_screen_get_root_window(desktop->priv->gscreen);
     gdk_property_delete(groot, gdk_atom_intern("XFCE_DESKTOP_WINDOW", FALSE));
     gdk_property_delete(groot, gdk_atom_intern("NAUTILUS_DESKTOP_WINDOW_ID", FALSE));
+
+#if 0 /* see bug #7442 */
     gdk_property_delete(groot, gdk_atom_intern("_XROOTPMAP_ID", FALSE));
     gdk_property_delete(groot, gdk_atom_intern("ESETROOT_PMAP_ID", FALSE));
     gdk_window_set_back_pixmap(groot, NULL, FALSE);
-    gdk_flush();
-    
+#endif
+
     if(desktop->priv->backdrops) {
         for(i = 0; i < desktop->priv->nbackdrops; i++) {
             g_snprintf(property_name, 128, XFDESKTOP_IMAGE_FILE_FMT, i);
@@ -825,7 +831,10 @@ xfce_desktop_unrealize(GtkWidget *widget)
         g_free(desktop->priv->backdrops);
         desktop->priv->backdrops = NULL;
     }
-    
+
+    gdk_flush();
+    gdk_error_trap_pop();
+
     g_object_unref(G_OBJECT(desktop->priv->bg_pixmap));
     desktop->priv->bg_pixmap = NULL;
     



More information about the Xfce4-commits mailing list