Hello community,

here is the log from the commit of package gtk2 for openSUSE:Factory checked in 
at 2016-01-01 19:46:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gtk2 (Old)
 and      /work/SRC/openSUSE:Factory/.gtk2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gtk2"

Changes:
--------
--- /work/SRC/openSUSE:Factory/gtk2/gtk2.changes        2015-12-17 
15:51:59.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.gtk2.new/gtk2.changes   2016-01-01 
19:47:10.000000000 +0100
@@ -1,0 +2,7 @@
+Mon Dec 28 15:54:03 UTC 2015 - [email protected]
+
+- Add gtk2-randr-1.5-monitor-support.patch: Adds support for using
+  the newly introduced monitor objects in the XRandR protocol.
+  Patch from upstream git (bgo#759912).
+
+-------------------------------------------------------------------

New:
----
  gtk2-randr-1.5-monitor-support.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ gtk2.spec ++++++
--- /var/tmp/diff_new_pack.qzu7Od/_old  2016-01-01 19:47:12.000000000 +0100
+++ /var/tmp/diff_new_pack.qzu7Od/_new  2016-01-01 19:47:12.000000000 +0100
@@ -59,6 +59,8 @@
 Patch57:        gtk2-bgo743166-remember-printing-authentication.patch
 # PATCH-FIX-UPSTREAM gtk2-bgo737777-fix-printing-authentication-crash.patch 
bgo#737777 [email protected] -- Applications crash randomly while printing 
with a password-secured SMB printer
 Patch58:        gtk2-bgo737777-fix-printing-authentication-crash.patch
+# PATCH-FIX-UPSTREAM gtk2-randr-1.5-monitor-support.patch bgo#759912 
[email protected] -- Adds support for using the newly introduced monitor 
objects in the XRandR protocol.
+Patch59:        gtk2-randr-1.5-monitor-support.patch
 BuildRequires:  atk-devel
 BuildRequires:  cairo-devel
 BuildRequires:  cups-devel
@@ -339,6 +341,7 @@
 %patch56 -p1
 %patch57 -p1
 %patch58 -p1
+%patch59 -p1
 gnome-patch-translation-update
 
 %build

++++++ gtk2-randr-1.5-monitor-support.patch ++++++
>From 8bbd76593097bb00b7c60d56743b584062b8dcf5 Mon Sep 17 00:00:00 2001
From: Dave Airlie <[email protected]>
Date: Mon, 2 Feb 2015 16:02:04 +1000
Subject: gtk2-24: add randr 1.5 monitor support [v3]

This patch introduces support for using the newly introduced
monitor objects in the XRandR protocol. These objects are meant
to be used to denote a set of rectangles representing a logical
monitor, and are used to hide details like monitor tiling and
virtual gpu outputs.

This uses the new objects instead of crtc/outputs objects when
they are available to create the monitor lists. X server 1.18
is required on the server side for randr 1.5.

This patch was cherry-picked and fixed from the gtk3 branch and
squashes the two following additional fixupes:

v2: Fix primary monitor determination with XRANDR 1.5
        Matthias Clasen <[email protected]>
v3: Fix a typo in the previous patch
        Matthias Clasen <[email protected]>

https://bugzilla.gnome.org/show_bug.cgi?id=759912
---
 configure.ac             |  3 +++
 gdk/x11/gdkdisplay-x11.c |  6 +++++
 gdk/x11/gdkdisplay-x11.h |  1 +
 gdk/x11/gdkscreen-x11.c  | 69 ++++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 79 insertions(+)

diff --git a/configure.ac b/configure.ac
index 1c041e6..7ed414c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1192,6 +1192,9 @@ if test "x$gdktarget" = "xx11"; then
   if $PKG_CONFIG --exists "xrandr >= 1.2.99" ; then
      AC_DEFINE(HAVE_RANDR, 1, [Have the Xrandr extension library])
 
+     if $PKG_CONFIG --exists "xrandr >= 1.5.0" ; then
+       AC_DEFINE(HAVE_RANDR15, 1, [Have the Xrandr 1.5 extension library])
+     fi
      X_PACKAGES="$X_PACKAGES xrandr"
   fi
        
diff --git a/gdk/x11/gdkdisplay-x11.c b/gdk/x11/gdkdisplay-x11.c
index 2bbcb35..0c63c55 100644
--- a/gdk/x11/gdkdisplay-x11.c
+++ b/gdk/x11/gdkdisplay-x11.c
@@ -182,6 +182,7 @@ gdk_display_open (const gchar *display_name)
 
   /* RandR must be initialized before we initialize the screens */
   display_x11->have_randr13 = FALSE;
+  display_x11->have_randr15 = FALSE;
 #ifdef HAVE_RANDR
   if (XRRQueryExtension (display_x11->xdisplay,
                         &display_x11->xrandr_event_base, &ignore))
@@ -193,6 +194,11 @@ gdk_display_open (const gchar *display_name)
       if ((major == 1 && minor >= 3) || major > 1)
          display_x11->have_randr13 = TRUE;
 
+#ifdef HAVE_RANDR15
+      if (minor >= 5 || major > 1)
+       display_x11->have_randr15 = TRUE;
+#endif
+
        gdk_x11_register_standard_event_type (display, 
display_x11->xrandr_event_base, RRNumberEvents);
   }
 #endif
diff --git a/gdk/x11/gdkdisplay-x11.h b/gdk/x11/gdkdisplay-x11.h
index f8a55d0..de85623 100644
--- a/gdk/x11/gdkdisplay-x11.h
+++ b/gdk/x11/gdkdisplay-x11.h
@@ -87,6 +87,7 @@ struct _GdkDisplayX11
   gint xdamage_event_base;
 
   gboolean have_randr13;
+  gboolean have_randr15;
   gint xrandr_event_base;
 
   /* If the SECURITY extension is in place, whether this client holds 
diff --git a/gdk/x11/gdkscreen-x11.c b/gdk/x11/gdkscreen-x11.c
index 66a0d96..9069bdc 100644
--- a/gdk/x11/gdkscreen-x11.c
+++ b/gdk/x11/gdkscreen-x11.c
@@ -740,6 +740,70 @@ monitor_compare_function (GdkX11Monitor *monitor1,
 }
 #endif
 
+#ifdef HAVE_RANDR15
+static gboolean
+init_randr15 (GdkScreen *screen)
+{
+  GdkDisplay *display = gdk_screen_get_display (screen);
+  GdkDisplayX11 *display_x11 = GDK_DISPLAY_X11 (display);
+  GdkScreenX11 *x11_screen = GDK_SCREEN_X11 (screen);
+  XRRMonitorInfo *rr_monitors;
+  int num_rr_monitors;
+  int i;
+  GArray *monitors;
+  XID primary_output = None;
+
+  if (!display_x11->have_randr15)
+    return FALSE;
+
+  rr_monitors = XRRGetMonitors (x11_screen->xdisplay,
+                                x11_screen->xroot_window,
+                                True,
+                                &num_rr_monitors);
+  if (!rr_monitors)
+    return FALSE;
+
+  monitors = g_array_sized_new (FALSE, TRUE, sizeof (GdkX11Monitor),
+                                num_rr_monitors);
+  for (i = 0; i < num_rr_monitors; i++)
+    {
+      GdkX11Monitor monitor;
+      init_monitor_geometry (&monitor,
+                             rr_monitors[i].x,
+                             rr_monitors[i].y,
+                             rr_monitors[i].width,
+                             rr_monitors[i].height);
+
+      monitor.width_mm = rr_monitors[i].mwidth;
+      monitor.height_mm = rr_monitors[i].mheight;
+      monitor.output = rr_monitors[i].outputs[0];
+      if (rr_monitors[i].primary)
+        primary_output = monitor.output;
+
+      g_array_append_val (monitors, monitor);
+    }
+  XRRFreeMonitors (rr_monitors);
+
+  g_array_sort (monitors,
+                (GCompareFunc) monitor_compare_function);
+  x11_screen->n_monitors = monitors->len;
+  x11_screen->monitors = (GdkX11Monitor *) g_array_free (monitors, FALSE);
+
+  x11_screen->primary_monitor = 0;
+
+  for (i = 0; i < x11_screen->n_monitors; i++)
+    {
+      if (x11_screen->monitors[i].output == primary_output)
+        {
+          x11_screen->primary_monitor = i;
+          break;
+        }
+    }
+
+  return x11_screen->n_monitors > 0;
+}
+#endif
+
 static gboolean
 init_randr13 (GdkScreen *screen)
 {
@@ -1020,6 +1084,11 @@ init_multihead (GdkScreen *screen)
   if (init_fake_xinerama (screen))
     return;
 
+#ifdef HAVE_RANDR15
+  if (init_randr15 (screen))
+    return;
+#endif
+
   if (init_randr13 (screen))
     return;
 
-- 
cgit v0.11.2


Reply via email to