From 002777de2a4761f4c19bce3e0a6f5e17c3b769a6 Mon Sep 17 00:00:00 2001 From: Soren Sandmann Pedersen Date: Sep 10 2008 10:29:42 +0000 Subject: Remove use of randr in init_multihead --- diff --git a/gtk+-2.14.1-no-randr.patch b/gtk+-2.14.1-no-randr.patch new file mode 100644 index 0000000..3b4db37 --- /dev/null +++ b/gtk+-2.14.1-no-randr.patch @@ -0,0 +1,105 @@ +Index: gdk/x11/gdkscreen-x11.c +=================================================================== +--- gdk/x11/gdkscreen-x11.c (revision 21333) ++++ gdk/x11/gdkscreen-x11.c (working copy) +@@ -664,81 +664,6 @@ + } + + static gboolean +-init_randr12 (GdkScreen *screen) +-{ +-#ifdef HAVE_RANDR +- GdkDisplay *display = gdk_screen_get_display (screen); +- GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display); +- GdkScreenX11 *screen_x11 = GDK_SCREEN_X11 (screen); +- Display *dpy = GDK_SCREEN_XDISPLAY (screen); +- XRRScreenResources *resources; +- int i; +- GArray *monitors; +- gboolean randr12_compat = FALSE; +- +- if (!display_x11->have_randr12) +- return FALSE; +- +- resources = XRRGetScreenResources (screen_x11->xdisplay, +- screen_x11->xroot_window); +- if (!resources) +- return FALSE; +- +- monitors = g_array_sized_new (FALSE, TRUE, sizeof (GdkX11Monitor), +- resources->noutput); +- +- for (i = 0; i < resources->noutput; ++i) +- { +- 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; +- XRRCrtcInfo *crtc = XRRGetCrtcInfo (dpy, resources, output->crtc); +- +- monitor.geometry.x = crtc->x; +- monitor.geometry.y = crtc->y; +- monitor.geometry.width = crtc->width; +- monitor.geometry.height = crtc->height; +- +- /* FIXME: fill this out properly - need EDID parser */ +- monitor.output = resources->outputs[i]; +- monitor.width_mm = -1; +- monitor.height_mm = -1; +- monitor.output_name = NULL; +- monitor.manufacturer = NULL; +- +- g_array_append_val (monitors, monitor); +- +- XRRFreeCrtcInfo (crtc); +- } +- +- XRRFreeOutputInfo (output); +- } +- +- 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); +- +- return TRUE; +-#endif +- +- return FALSE; +-} +- +-static gboolean + init_solaris_xinerama (GdkScreen *screen) + { + #ifdef HAVE_SOLARIS_XINERAMA +@@ -861,14 +786,14 @@ + * 3. Solaris Xinerama + * 4. XFree86/Xorg Xinerama + * +- * We use them in that order. ++ * However, there are performance issues with calling ++ * XRRGetScreenResources() every time an application starts, ++ * so in the RandR case we simply rely on the information being ++ * exported through Xinerama as well. + */ + if (init_fake_xinerama (screen)) + return; + +- if (init_randr12 (screen)) +- return; +- + if (XQueryExtension (GDK_SCREEN_XDISPLAY (screen), "XINERAMA", + &opcode, &firstevent, &firsterror)) + { diff --git a/gtk2.spec b/gtk2.spec index f09b84e..46fcc6f 100644 --- a/gtk2.spec +++ b/gtk2.spec @@ -16,7 +16,7 @@ Summary: The GIMP ToolKit (GTK+), a library for creating GUIs for X Name: gtk2 Version: %{base_version} -Release: 4%{?dist} +Release: 5%{?dist} License: LGPLv2+ Group: System Environment/Libraries Source: http://download.gnome.org/sources/gtk+/2.14/gtk+-%{version}.tar.bz2 @@ -32,6 +32,7 @@ Patch1: gtk+-2.11.1-set-invisible-char-to-bullet.patch Patch2: workaround.patch # fixed upstream Patch3: init-deadlock.patch +Patch4: gtk+-2.14.1-no-randr.patch BuildRequires: atk-devel >= %{atk_version} BuildRequires: pango-devel >= %{pango_version} @@ -118,6 +119,7 @@ docs for the GTK+ widget toolkit. %patch1 -p1 -b .set-invisible-char-to-bullet %patch2 -p1 -b .workaround %patch3 -p0 -b .init-deadlock +%patch4 -p0 -b .no-randr for i in config.guess config.sub ; do test -f %{_datadir}/libtool/$i && cp %{_datadir}/libtool/$i .