[gtk+] gdk/x11: don't select RANDR events if the extension is missing
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] gdk/x11: don't select RANDR events if the extension is missing
- Date: Mon, 3 Jan 2011 17:14:21 +0000 (UTC)
commit d211c8af6bab2f99aeebb83707d29649f0108364
Author: Julien Cristau <jcristau debian org>
Date: Thu Dec 23 13:50:13 2010 +0100
gdk/x11: don't select RANDR events if the extension is missing
Prevents an Xlib warning on Xnest, or Xorg with xinerama, or other
non-RANDR-capable xserver. Reintroduce a have_randr12 field in
GdkDisplayX11 to avoid having to call XRRQuery{Extension,Version} twice,
and don't select randr 1.2 events if that's false.
https://bugzilla.gnome.org/show_bug.cgi?id=634711
Signed-off-by: Julien Cristau <jcristau debian org>
gdk/x11/gdkdisplay-x11.c | 8 ++++++--
gdk/x11/gdkdisplay-x11.h | 1 +
gdk/x11/gdkscreen-x11.c | 23 +++++++++++++----------
3 files changed, 20 insertions(+), 12 deletions(-)
---
diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c
index a231332..e406bb8 100644
--- a/gdk/x11/gdkdisplay-x11.c
+++ b/gdk/x11/gdkdisplay-x11.c
@@ -1220,6 +1220,7 @@ _gdk_x11_display_open (const gchar *display_name)
_gdk_x11_precache_atoms (display, precache_atoms, G_N_ELEMENTS (precache_atoms));
/* RandR must be initialized before we initialize the screens */
+ display_x11->have_randr12 = FALSE;
display_x11->have_randr13 = FALSE;
#ifdef HAVE_RANDR
if (XRRQueryExtension (display_x11->xdisplay,
@@ -1229,8 +1230,11 @@ _gdk_x11_display_open (const gchar *display_name)
XRRQueryVersion (display_x11->xdisplay, &major, &minor);
- if ((major == 1 && minor >= 3) || major > 1)
- display_x11->have_randr13 = TRUE;
+ if ((major == 1 && minor >= 2) || major > 1) {
+ display_x11->have_randr12 = TRUE;
+ if (minor >= 3 || major > 1)
+ display_x11->have_randr13 = TRUE;
+ }
gdk_x11_register_standard_event_type (display, display_x11->xrandr_event_base, RRNumberEvents);
}
diff --git a/gdk/x11/gdkdisplay-x11.h b/gdk/x11/gdkdisplay-x11.h
index e19c57f..cd72cfa 100644
--- a/gdk/x11/gdkdisplay-x11.h
+++ b/gdk/x11/gdkdisplay-x11.h
@@ -67,6 +67,7 @@ struct _GdkX11Display
gboolean have_xdamage;
gint xdamage_event_base;
+ gboolean have_randr12;
gboolean have_randr13;
gint xrandr_event_base;
diff --git a/gdk/x11/gdkscreen-x11.c b/gdk/x11/gdkscreen-x11.c
index a42938b..85aa09a 100644
--- a/gdk/x11/gdkscreen-x11.c
+++ b/gdk/x11/gdkscreen-x11.c
@@ -1,7 +1,7 @@
/*
* gdkscreen-x11.c
- *
- * Copyright 2001 Sun Microsystems Inc.
+ *
+ * Copyright 2001 Sun Microsystems Inc.
*
* Erwann Chenede <erwann chenede sun com>
*
@@ -842,20 +842,23 @@ gdk_x11_screen_is_composited (GdkScreen *screen)
}
static void
-init_randr_support (GdkScreen * screen)
+init_randr_support (GdkScreen *screen)
{
GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen);
-
+
XSelectInput (GDK_SCREEN_XDISPLAY (screen),
- x11_screen->xroot_window,
- StructureNotifyMask);
+ x11_screen->xroot_window,
+ StructureNotifyMask);
#ifdef HAVE_RANDR
+ if (!GDK_X11_DISPLAY (gdk_screen_get_display (screen))->have_randr12)
+ return;
+
XRRSelectInput (GDK_SCREEN_XDISPLAY (screen),
- x11_screen->xroot_window,
- RRScreenChangeNotifyMask |
- RRCrtcChangeNotifyMask |
- RROutputPropertyNotifyMask);
+ x11_screen->xroot_window,
+ RRScreenChangeNotifyMask
+ | RRCrtcChangeNotifyMask
+ | RROutputPropertyNotifyMask);
#endif
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]