diff -up gnome-session-2.31.6/gnome-session/gs-idle-monitor.c.gdk-display-fix gnome-session-2.31.6/gnome-session/gs-idle-monitor.c --- gnome-session-2.31.6/gnome-session/gs-idle-monitor.c.gdk-display-fix 2010-09-21 12:42:28.181187473 -0400 +++ gnome-session-2.31.6/gnome-session/gs-idle-monitor.c 2010-09-21 12:46:35.594095313 -0400 @@ -141,16 +141,16 @@ send_fake_event (GSIdleMonitor *monitor) g_debug ("GSIdleMonitor: sending fake key"); - XLockDisplay (GDK_DISPLAY()); - XTestFakeKeyEvent (GDK_DISPLAY(), + XLockDisplay (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ())); + XTestFakeKeyEvent (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), *monitor->priv->keycode, True, CurrentTime); - XTestFakeKeyEvent (GDK_DISPLAY(), + XTestFakeKeyEvent (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), *monitor->priv->keycode, False, CurrentTime); - XUnlockDisplay (GDK_DISPLAY()); + XUnlockDisplay (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ())); /* Swap the keycode */ if (monitor->priv->keycode == &monitor->priv->keycode1) { @@ -249,7 +249,7 @@ init_xsync (GSIdleMonitor *monitor) int ncounters; XSyncSystemCounter *counters; - res = XSyncQueryExtension (GDK_DISPLAY (), + res = XSyncQueryExtension (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), &monitor->priv->sync_event_base, &sync_error_base); if (! res) { @@ -257,13 +257,13 @@ init_xsync (GSIdleMonitor *monitor) return FALSE; } - res = XSyncInitialize (GDK_DISPLAY (), &major, &minor); + res = XSyncInitialize (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), &major, &minor); if (! res) { g_warning ("GSIdleMonitor: Unable to initialize Sync extension"); return FALSE; } - counters = XSyncListSystemCounters (GDK_DISPLAY (), &ncounters); + counters = XSyncListSystemCounters (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), &ncounters); for (i = 0; i < ncounters; i++) { if (counters[i].name != NULL && strcmp (counters[i].name, "IDLETIME") == 0) { @@ -289,23 +289,23 @@ _init_xtest (GSIdleMonitor *monitor) #ifdef HAVE_XTEST int a, b, c, d; - XLockDisplay (GDK_DISPLAY()); - monitor->priv->have_xtest = (XTestQueryExtension (GDK_DISPLAY(), &a, &b, &c, &d) == True); + XLockDisplay (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ())); + monitor->priv->have_xtest = (XTestQueryExtension (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), &a, &b, &c, &d) == True); if (monitor->priv->have_xtest) { - monitor->priv->keycode1 = XKeysymToKeycode (GDK_DISPLAY(), XK_Alt_L); + monitor->priv->keycode1 = XKeysymToKeycode (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), XK_Alt_L); if (monitor->priv->keycode1 == 0) { g_warning ("keycode1 not existant"); } - monitor->priv->keycode2 = XKeysymToKeycode (GDK_DISPLAY(), XK_Alt_R); + monitor->priv->keycode2 = XKeysymToKeycode (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), XK_Alt_R); if (monitor->priv->keycode2 == 0) { - monitor->priv->keycode2 = XKeysymToKeycode (GDK_DISPLAY(), XK_Alt_L); + monitor->priv->keycode2 = XKeysymToKeycode (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), XK_Alt_L); if (monitor->priv->keycode2 == 0) { g_warning ("keycode2 not existant"); } } monitor->priv->keycode = &monitor->priv->keycode1; } - XUnlockDisplay (GDK_DISPLAY()); + XUnlockDisplay (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ())); #endif /* HAVE_XTEST */ } @@ -379,10 +379,10 @@ idle_monitor_watch_free (GSIdleMonitorWa return; } if (watch->xalarm_positive != None) { - XSyncDestroyAlarm (GDK_DISPLAY (), watch->xalarm_positive); + XSyncDestroyAlarm (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), watch->xalarm_positive); } if (watch->xalarm_negative != None) { - XSyncDestroyAlarm (GDK_DISPLAY (), watch->xalarm_negative); + XSyncDestroyAlarm (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), watch->xalarm_negative); } g_slice_free (GSIdleMonitorWatch, watch); } @@ -452,22 +452,22 @@ _xsync_alarm_set (GSIdleMonitor *mo if (watch->xalarm_positive != None) { g_debug ("GSIdleMonitor: updating alarm for positive transition wait=%lld", _xsyncvalue_to_int64 (attr.trigger.wait_value)); - XSyncChangeAlarm (GDK_DISPLAY (), watch->xalarm_positive, flags, &attr); + XSyncChangeAlarm (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), watch->xalarm_positive, flags, &attr); } else { g_debug ("GSIdleMonitor: creating new alarm for positive transition wait=%lld", _xsyncvalue_to_int64 (attr.trigger.wait_value)); - watch->xalarm_positive = XSyncCreateAlarm (GDK_DISPLAY (), flags, &attr); + watch->xalarm_positive = XSyncCreateAlarm (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), flags, &attr); } attr.trigger.test_type = XSyncNegativeTransition; if (watch->xalarm_negative != None) { g_debug ("GSIdleMonitor: updating alarm for negative transition wait=%lld", _xsyncvalue_to_int64 (attr.trigger.wait_value)); - XSyncChangeAlarm (GDK_DISPLAY (), watch->xalarm_negative, flags, &attr); + XSyncChangeAlarm (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), watch->xalarm_negative, flags, &attr); } else { g_debug ("GSIdleMonitor: creating new alarm for negative transition wait=%lld", _xsyncvalue_to_int64 (attr.trigger.wait_value)); - watch->xalarm_negative = XSyncCreateAlarm (GDK_DISPLAY (), flags, &attr); + watch->xalarm_negative = XSyncCreateAlarm (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), flags, &attr); } return TRUE; diff -up gnome-session-2.31.6/gnome-session/gsm-inhibit-dialog.c.gdk-display-fix gnome-session-2.31.6/gnome-session/gsm-inhibit-dialog.c --- gnome-session-2.31.6/gnome-session/gsm-inhibit-dialog.c.gdk-display-fix 2010-09-21 12:29:00.821752493 -0400 +++ gnome-session-2.31.6/gnome-session/gsm-inhibit-dialog.c 2010-09-21 12:41:47.118369100 -0400 @@ -351,7 +351,8 @@ get_cmap (GdkPixmap *pixmap) } static GdkPixbuf * -pixbuf_get_from_pixmap (Pixmap xpixmap) +pixbuf_get_from_pixmap (GdkScreen *screen, + Pixmap xpixmap) { GdkDrawable *drawable; GdkPixbuf *retval; @@ -363,7 +364,7 @@ pixbuf_get_from_pixmap (Pixmap xpixmap) cmap = NULL; g_debug ("GsmInhibitDialog: getting foreign pixmap for %u", (guint)xpixmap); - drawable = gdk_pixmap_foreign_new (xpixmap); + drawable = gdk_pixmap_foreign_new_for_display (gdk_screen_get_display (screen), xpixmap); if (GDK_IS_PIXMAP (drawable)) { cmap = get_cmap (drawable); gdk_drawable_get_size (drawable, @@ -389,7 +390,8 @@ pixbuf_get_from_pixmap (Pixmap xpixmap) } static Pixmap -get_pixmap_for_window (Window window) +get_pixmap_for_window (GdkScreen *screen, + Window window) { XWindowAttributes attr; XRenderPictureAttributes pa; @@ -403,9 +405,9 @@ get_pixmap_for_window (Window window) int width; int height; - XGetWindowAttributes (GDK_DISPLAY (), window, &attr); + XGetWindowAttributes (GDK_SCREEN_XDISPLAY (screen), window, &attr); - format = XRenderFindVisualFormat (GDK_DISPLAY (), attr.visual); + format = XRenderFindVisualFormat (GDK_SCREEN_XDISPLAY (screen), attr.visual); has_alpha = (format->type == PictTypeDirect && format->direct.alphaMask); x = attr.x; y = attr.y; @@ -414,15 +416,15 @@ get_pixmap_for_window (Window window) pa.subwindow_mode = IncludeInferiors; /* Don't clip child widgets */ - src_picture = XRenderCreatePicture (GDK_DISPLAY (), window, format, CPSubwindowMode, &pa); + src_picture = XRenderCreatePicture (GDK_SCREEN_XDISPLAY (screen), window, format, CPSubwindowMode, &pa); - pixmap = XCreatePixmap (GDK_DISPLAY (), + pixmap = XCreatePixmap (GDK_SCREEN_XDISPLAY (screen), window, width, height, attr.depth); - dst_picture = XRenderCreatePicture (GDK_DISPLAY (), pixmap, format, 0, 0); - XRenderComposite (GDK_DISPLAY (), + dst_picture = XRenderCreatePicture (GDK_SCREEN_XDISPLAY (screen), pixmap, format, 0, 0); + XRenderComposite (GDK_SCREEN_XDISPLAY (screen), has_alpha ? PictOpOver : PictOpSrc, src_picture, None, @@ -438,9 +440,10 @@ get_pixmap_for_window (Window window) #endif /* HAVE_COMPOSITE */ static GdkPixbuf * -get_pixbuf_for_window (guint xid, - int width, - int height) +get_pixbuf_for_window (GdkScreen *screen, + guint xid, + int width, + int height) { GdkPixbuf *pixbuf = NULL; #ifdef HAVE_XRENDER @@ -448,7 +451,7 @@ get_pixbuf_for_window (guint xid, Pixmap xpixmap; xwindow = (Window) xid; - xpixmap = get_pixmap_for_window (xwindow); + xpixmap = get_pixmap_for_window (screen, xwindow); if (xpixmap == None) { g_debug ("GsmInhibitDialog: Unable to get window snapshot for %u", xid); return NULL; @@ -456,12 +459,12 @@ get_pixbuf_for_window (guint xid, g_debug ("GsmInhibitDialog: Got xpixmap %u", (guint)xpixmap); } - pixbuf = pixbuf_get_from_pixmap (xpixmap); + pixbuf = pixbuf_get_from_pixmap (screen, xpixmap); if (xpixmap != None) { gdk_error_trap_push (); - XFreePixmap (GDK_DISPLAY (), xpixmap); - gdk_display_sync (gdk_display_get_default ()); + XFreePixmap (GDK_SCREEN_XDISPLAY (screen), xpixmap); + gdk_display_sync (gdk_screen_get_display (screen)); gdk_error_trap_pop (); } @@ -513,7 +516,8 @@ add_inhibitor (GsmInhibitDialog *dialog, xid = gsm_inhibitor_peek_toplevel_xid (inhibitor); g_debug ("GsmInhibitDialog: inhibitor has XID %u", xid); if (xid > 0 && dialog->priv->have_xrender) { - pixbuf = get_pixbuf_for_window (xid, DEFAULT_SNAPSHOT_SIZE, DEFAULT_SNAPSHOT_SIZE); + pixbuf = get_pixbuf_for_window (gtk_widget_get_screen (GTK_WIDGET (dialog)), + xid, DEFAULT_SNAPSHOT_SIZE, DEFAULT_SNAPSHOT_SIZE); if (pixbuf == NULL) { g_debug ("GsmInhibitDialog: unable to read pixbuf from %u", xid); } @@ -989,7 +993,7 @@ gsm_inhibit_dialog_constructor (GType #ifdef HAVE_XRENDER gdk_error_trap_push (); - if (XRenderQueryExtension (GDK_DISPLAY (), &dialog->priv->xrender_event_base, &dialog->priv->xrender_error_base)) { + if (XRenderQueryExtension (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), &dialog->priv->xrender_event_base, &dialog->priv->xrender_error_base)) { g_debug ("GsmInhibitDialog: Initialized XRender extension"); dialog->priv->have_xrender = TRUE; } else {