diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c index a231332225..e406bb83e3 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 e19c57f3f9..cd72cfae62 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 a42938b4aa..85aa09afc9 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 * @@ -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 }