gtk+ r20893 - in trunk: . gdk/x11



Author: fcrozat
Date: Tue Jul 22 17:41:39 2008
New Revision: 20893
URL: http://svn.gnome.org/viewvc/gtk+?rev=20893&view=rev

Log:
2008-07-22  Frederic Crozat  <fcrozat mandriva com>

        * gdk/x11/gdkscreen-x11.c: Don't use RandR 1.2
        if driver is detected as randr12_compat (ie X driver
        is not RandR 1.2 compliant). Fixes multihead with
        such drivers. Bug #543317.



Modified:
   trunk/ChangeLog
   trunk/gdk/x11/gdkscreen-x11.c

Modified: trunk/gdk/x11/gdkscreen-x11.c
==============================================================================
--- trunk/gdk/x11/gdkscreen-x11.c	(original)
+++ trunk/gdk/x11/gdkscreen-x11.c	Tue Jul 22 17:41:39 2008
@@ -674,6 +674,7 @@
   XRRScreenResources *resources;
   int i;
   GArray *monitors;
+  gboolean randr12_compat = FALSE;
 
   if (!display_x11->have_randr12)
       return FALSE;
@@ -691,6 +692,9 @@
       XRROutputInfo *output =
 	XRRGetOutputInfo (dpy, resources, resources->outputs[i]);
 
+      /* Non RandR1.2 X driver have output name "default" */
+      randr12_compat |= !g_strcmp0(output->name, "default");
+
       if (output->crtc)
 	{
 	  GdkX11Monitor monitor;
@@ -718,6 +722,13 @@
 
   XRRFreeScreenResources (resources);
 
+  /* non RandR 1.2 X driver doesn't return any usable multihead data */
+  if (randr12_compat)
+    {
+      g_array_free (monitors, TRUE);
+      return FALSE;
+    }
+
   screen_x11->n_monitors = monitors->len;
   screen_x11->monitors = (GdkX11Monitor *)g_array_free (monitors, FALSE);
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]