commit:     48829a034ee86281bc4c7bef35d8dc937624227b
Author:     Mart Raudsepp <leio <AT> gentoo <DOT> org>
AuthorDate: Sat May 13 16:42:19 2017 +0000
Commit:     Mart Raudsepp <leio <AT> gentoo <DOT> org>
CommitDate: Sat May 13 16:44:20 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=48829a03

x11-wm/mutter: revbump with various fixes, mostly for wayland session

Package-Manager: Portage-2.3.5, Repoman-2.3.2

 .../3.22.4-clutter-missing-null-terminator.patch   |  28 ++++
 .../files/3.22.4-wayland-clipboard-fix.patch       |  32 +++++
 x11-wm/mutter/files/3.22.4-wayland-crash-fix.patch |  31 +++++
 .../3.22.4-wayland-ensure-pending-geometry.patch   |  47 +++++++
 .../mutter/files/3.22.4-wayland-size-hints.patch   |  56 ++++++++
 x11-wm/mutter/mutter-3.22.4-r1.ebuild              | 144 +++++++++++++++++++++
 6 files changed, 338 insertions(+)

diff --git a/x11-wm/mutter/files/3.22.4-clutter-missing-null-terminator.patch 
b/x11-wm/mutter/files/3.22.4-clutter-missing-null-terminator.patch
new file mode 100644
index 00000000000..ed16b8c6f4b
--- /dev/null
+++ b/x11-wm/mutter/files/3.22.4-clutter-missing-null-terminator.patch
@@ -0,0 +1,28 @@
+From f6888519ff3e20ec8f5e6064bff5707acbe13fbd Mon Sep 17 00:00:00 2001
+From: Nigel Taylor <ni...@openbsd.org>
+Date: Fri, 5 May 2017 08:42:47 -0400
+Subject: [PATCH 2/5] clutter: conform/actor-graph: Add missing
+ null-termination
+
+https://bugzilla.gnome.org/show_bug.cgi?id=759085
+---
+ clutter/tests/conform/actor-graph.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/clutter/tests/conform/actor-graph.c 
b/clutter/tests/conform/actor-graph.c
+index 0dad49b..8fbf4bc 100644
+--- a/clutter/tests/conform/actor-graph.c
++++ b/clutter/tests/conform/actor-graph.c
+@@ -350,7 +350,8 @@ actor_replace_child (void)
+   g_assert_cmpstr (clutter_actor_get_name (iter), ==, "qux");
+ 
+   clutter_actor_add_child (actor, g_object_new (CLUTTER_TYPE_ACTOR,
+-                                                "name", "foo"));
++                                                "name", "foo",
++                                                NULL));
+ 
+   clutter_actor_replace_child (actor, iter,
+                                g_object_new (CLUTTER_TYPE_ACTOR,
+-- 
+2.10.1
+

diff --git a/x11-wm/mutter/files/3.22.4-wayland-clipboard-fix.patch 
b/x11-wm/mutter/files/3.22.4-wayland-clipboard-fix.patch
new file mode 100644
index 00000000000..24e6fd36a30
--- /dev/null
+++ b/x11-wm/mutter/files/3.22.4-wayland-clipboard-fix.patch
@@ -0,0 +1,32 @@
+From 19f08fbdbba113883c6011e4b8ccf3ea3a6eb57e Mon Sep 17 00:00:00 2001
+From: Carlos Garnacho <carl...@gnome.org>
+Date: Wed, 10 May 2017 20:28:42 +0200
+Subject: [PATCH 5/5] xwayland: Use the right atom type for further selection
+ requests to X11
+
+If we translate between text/plain;charset-utf-8 from the wayland side to
+UTF8_STRING on the X11 side, we want to continue all further X11 selection
+requests using the same translated UTF8_STRING atom than we use in the
+first XConvertSelection call.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=782472
+---
+ src/wayland/meta-xwayland-selection.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/wayland/meta-xwayland-selection.c 
b/src/wayland/meta-xwayland-selection.c
+index a78e846..24b8cd2 100644
+--- a/src/wayland/meta-xwayland-selection.c
++++ b/src/wayland/meta-xwayland-selection.c
+@@ -829,7 +829,7 @@ meta_x11_source_send (MetaWaylandDataSource *source,
+   /* Takes ownership of fd */
+   selection->x11_selection =
+     x11_selection_data_new (compositor->xwayland_manager.selection_data,
+-                            fd, mime_type);
++                            fd, gdk_x11_get_xatom_name (type_atom));
+ 
+   XConvertSelection (xdisplay,
+                      selection->selection_atom, type_atom,
+-- 
+2.10.1
+

diff --git a/x11-wm/mutter/files/3.22.4-wayland-crash-fix.patch 
b/x11-wm/mutter/files/3.22.4-wayland-crash-fix.patch
new file mode 100644
index 00000000000..a6eddb1f72e
--- /dev/null
+++ b/x11-wm/mutter/files/3.22.4-wayland-crash-fix.patch
@@ -0,0 +1,31 @@
+From ba317dcd74baebfd8f8c8dd417ded71f6cc8c771 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jad...@gmail.com>
+Date: Mon, 17 Apr 2017 13:27:35 +0800
+Subject: [PATCH 1/5] wayland/subsurface: Handle clients committing on
+ destroyed subsurface
+
+A client can still commit state to a destroyed subsurface. It wont
+update anything on the screen, since the subsurface will not be
+visible, but mutter should still handle it and not crash.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=781391
+---
+ src/wayland/meta-wayland-surface.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/wayland/meta-wayland-surface.c 
b/src/wayland/meta-wayland-surface.c
+index 99e3dfd..a6079ee 100644
+--- a/src/wayland/meta-wayland-surface.c
++++ b/src/wayland/meta-wayland-surface.c
+@@ -605,7 +605,7 @@ subsurface_role_get_toplevel (MetaWaylandSurfaceRole 
*surface_role)
+     meta_wayland_surface_role_get_surface (surface_role);
+   MetaWaylandSurface *parent = surface->sub.parent;
+ 
+-  if (parent->role)
++  if (parent && parent->role)
+     return meta_wayland_surface_role_get_toplevel (parent->role);
+   else
+     return NULL;
+-- 
+2.10.1
+

diff --git a/x11-wm/mutter/files/3.22.4-wayland-ensure-pending-geometry.patch 
b/x11-wm/mutter/files/3.22.4-wayland-ensure-pending-geometry.patch
new file mode 100644
index 00000000000..543d6edb8e7
--- /dev/null
+++ b/x11-wm/mutter/files/3.22.4-wayland-ensure-pending-geometry.patch
@@ -0,0 +1,47 @@
+From ca31a94e54819b5bfeccbeef4e7c041bbef15eac Mon Sep 17 00:00:00 2001
+From: Olivier Fourdan <ofour...@redhat.com>
+Date: Fri, 5 May 2017 13:55:51 +0200
+Subject: [PATCH 3/5] wayland: Make sure we have a pending geometry
+
+If the client doesn't set a geometry using xdg_shell, we'll compute its
+geometry based on its surface and subsurfaces.
+
+Yet, we translate that as a window (re)size only when there is a pending
+geometry, that we don't have when we computed the geometry by ourself.
+
+Make sure we set the pending new geometry flag when computing the
+geometry when it actually changed.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=782213
+---
+ src/wayland/meta-wayland-xdg-shell.c | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/src/wayland/meta-wayland-xdg-shell.c 
b/src/wayland/meta-wayland-xdg-shell.c
+index aa355da..87a8382 100644
+--- a/src/wayland/meta-wayland-xdg-shell.c
++++ b/src/wayland/meta-wayland-xdg-shell.c
+@@ -1263,11 +1263,19 @@ xdg_surface_role_commit (MetaWaylandSurfaceRole  
*surface_role,
+     }
+   else if (!priv->has_set_geometry)
+     {
++      MetaRectangle new_geometry = { 0 };
++
+       /* If the surface has never set any geometry, calculate
+        * a default one unioning the surface and all subsurfaces together. */
++
+       meta_wayland_surface_calculate_window_geometry (surface,
+-                                                      &priv->geometry,
++                                                      &new_geometry,
+                                                       0, 0);
++      if (!meta_rectangle_equal (&new_geometry, &priv->geometry))
++        {
++          pending->has_new_geometry = TRUE;
++          priv->geometry = new_geometry;
++        }
+     }
+ }
+ 
+-- 
+2.10.1
+

diff --git a/x11-wm/mutter/files/3.22.4-wayland-size-hints.patch 
b/x11-wm/mutter/files/3.22.4-wayland-size-hints.patch
new file mode 100644
index 00000000000..03b2b22fe65
--- /dev/null
+++ b/x11-wm/mutter/files/3.22.4-wayland-size-hints.patch
@@ -0,0 +1,56 @@
+From 40a3d67698dc992d084886e01b07a78d438bbf8e Mon Sep 17 00:00:00 2001
+From: Olivier Fourdan <ofour...@redhat.com>
+Date: Wed, 10 May 2017 08:59:53 +0200
+Subject: [PATCH 4/5] wayland: Apply size hints regardless of geometry
+
+Previously we would bail out early in xdg_toplevel_role_commit() if no
+geometry change was set, ignoring the possible min/max size hints
+changes.
+
+But setting a min/max size hint without changing the geometry is
+perfectly valid, so we ought to apply the min/max changes regardless of
+a geometry change.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=782213
+---
+ src/wayland/meta-wayland-xdg-shell.c | 22 ++++++++++------------
+ 1 file changed, 10 insertions(+), 12 deletions(-)
+
+diff --git a/src/wayland/meta-wayland-xdg-shell.c 
b/src/wayland/meta-wayland-xdg-shell.c
+index 87a8382..bd576f6 100644
+--- a/src/wayland/meta-wayland-xdg-shell.c
++++ b/src/wayland/meta-wayland-xdg-shell.c
+@@ -615,20 +615,18 @@ xdg_toplevel_role_commit (MetaWaylandSurfaceRole  
*surface_role,
+   if (!window)
+     return;
+ 
+-  if (!pending->has_new_geometry)
++  if (pending->has_new_geometry)
+     {
+-      if (pending->dx != 0 || pending->dx != 0)
+-        {
+-          g_warning ("XXX: Attach-initiated move without a new geometry. This 
is unimplemented right now.");
+-        }
+-      return;
++      window_geometry = meta_wayland_xdg_surface_get_window_geometry 
(xdg_surface);
++      meta_window_wayland_move_resize (window,
++                                       
&xdg_surface_priv->acked_configure_serial,
++                                       window_geometry,
++                                       pending->dx, pending->dy);
++    }
++  else if (pending->dx != 0 || pending->dx != 0)
++    {
++      g_warning ("XXX: Attach-initiated move without a new geometry. This is 
unimplemented right now.");
+     }
+-
+-  window_geometry = meta_wayland_xdg_surface_get_window_geometry 
(xdg_surface);
+-  meta_window_wayland_move_resize (window,
+-                                   &xdg_surface_priv->acked_configure_serial,
+-                                   window_geometry,
+-                                   pending->dx, pending->dy);
+ 
+   /* When we get to this point, we ought to have valid size hints */
+   if (pending->has_new_min_size || pending->has_new_max_size)
+-- 
+2.10.1
+

diff --git a/x11-wm/mutter/mutter-3.22.4-r1.ebuild 
b/x11-wm/mutter/mutter-3.22.4-r1.ebuild
new file mode 100644
index 00000000000..f4fe7fd851d
--- /dev/null
+++ b/x11-wm/mutter/mutter-3.22.4-r1.ebuild
@@ -0,0 +1,144 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+inherit gnome2 virtualx
+
+DESCRIPTION="GNOME 3 compositing window manager based on Clutter"
+HOMEPAGE="https://git.gnome.org/browse/mutter/";
+
+LICENSE="GPL-2+"
+SLOT="0"
+
+IUSE="debug gles2 input_devices_wacom +introspection test udev wayland"
+
+KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~sparc ~x86"
+
+# libXi-1.7.4 or newer needed per:
+# https://bugzilla.gnome.org/show_bug.cgi?id=738944
+COMMON_DEPEND="
+       >=dev-libs/atk-2.5.3
+       >=x11-libs/gdk-pixbuf-2:2
+       >=dev-libs/json-glib-0.12.0
+       >=x11-libs/pango-1.30[introspection?]
+       >=x11-libs/cairo-1.14[X]
+       >=x11-libs/gtk+-3.19.8:3[X,introspection?]
+       >=dev-libs/glib-2.49.0:2[dbus]
+       >=media-libs/libcanberra-0.26[gtk3]
+       >=x11-libs/startup-notification-0.7
+       >=x11-libs/libXcomposite-0.2
+       >=gnome-base/gsettings-desktop-schemas-3.21.4[introspection?]
+       gnome-base/gnome-desktop:3=
+       >sys-power/upower-0.99:=
+
+       x11-libs/libICE
+       x11-libs/libSM
+       x11-libs/libX11
+       >=x11-libs/libXcomposite-0.4
+       x11-libs/libXcursor
+       x11-libs/libXdamage
+       x11-libs/libXext
+       >=x11-libs/libXfixes-3
+       >=x11-libs/libXi-1.7.4
+       x11-libs/libXinerama
+       >=x11-libs/libXrandr-1.5
+       x11-libs/libXrender
+       x11-libs/libxcb
+       x11-libs/libxkbfile
+       >=x11-libs/libxkbcommon-0.4.3[X]
+       x11-misc/xkeyboard-config
+
+       gnome-extra/zenity
+       media-libs/mesa[egl]
+
+       gles2? ( media-libs/mesa[gles2] )
+       input_devices_wacom? ( >=dev-libs/libwacom-0.13 )
+       introspection? ( >=dev-libs/gobject-introspection-1.42:= )
+       udev? ( virtual/libgudev:= )
+       wayland? (
+               >=dev-libs/libinput-1.4
+               >=dev-libs/wayland-1.6.90
+               >=dev-libs/wayland-protocols-1.7
+               >=media-libs/mesa-10.3[egl,gbm,wayland]
+               sys-apps/systemd
+               virtual/libgudev:=
+               >=virtual/libudev-136:=
+               x11-base/xorg-server[wayland]
+               x11-libs/libdrm:=
+       )
+"
+DEPEND="${COMMON_DEPEND}
+       >=sys-devel/gettext-0.19.6
+       virtual/pkgconfig
+       x11-proto/xextproto
+       x11-proto/xineramaproto
+       x11-proto/xproto
+       test? ( app-text/docbook-xml-dtd:4.5 )
+       wayland? ( >=sys-kernel/linux-headers-4.4 )
+"
+RDEPEND="${COMMON_DEPEND}
+       !x11-misc/expocity
+"
+
+PATCHES=(
+       # Important fixes from gnome-3-22 branch, mostly for wayland session
+       "${FILESDIR}"/${PV}-wayland-crash-fix.patch # firefox wrongly using 
subsurfaces for popups occasional crash fix
+       "${FILESDIR}"/${PV}-clutter-missing-null-terminator.patch # fixes 
potential crashes on armhf
+       "${FILESDIR}"/${PV}-wayland-ensure-pending-geometry.patch # initial 
positioning fix for wayland for certain apps
+       "${FILESDIR}"/${PV}-wayland-size-hints.patch # apply min/max size hints 
in more cases properly
+       "${FILESDIR}"/${PV}-wayland-clipboard-fix.patch # Fixes utf8 clipboard 
with gtk+-3.22.13+
+)
+
+src_prepare() {
+       # Disable building of noinst_PROGRAM for tests
+       if ! use test; then
+               sed -e '/^noinst_PROGRAMS/d' \
+                       -i cogl/tests/conform/Makefile.{am,in} || die
+               sed -e '/noinst_PROGRAMS += testboxes/d' \
+                       -i src/Makefile-tests.am || die
+               sed -e '/noinst_PROGRAMS/ s/testboxes$(EXEEXT)//' \
+                       -i src/Makefile.in || die
+       fi
+
+       gnome2_src_prepare
+
+       # Leave the damn CFLAGS alone
+       sed -e 's/$CFLAGS -g/$CFLAGS /' \
+               -i clutter/configure || die
+       sed -e 's/$CFLAGS -g -O0/$CFLAGS /' \
+               -i cogl/configure || die
+       sed -e 's/$CFLAGS -g -O/$CFLAGS /' \
+               -i configure || die
+}
+
+src_configure() {
+       # Prefer gl driver by default
+       # GLX is forced by mutter but optional in clutter
+       # xlib-egl-platform required by mutter x11 backend
+       # native backend without wayland is useless
+       gnome2_src_configure \
+               --disable-static \
+               --enable-compile-warnings=minimum \
+               --enable-gl \
+               --enable-glx \
+               --enable-sm \
+               --enable-startup-notification \
+               --enable-verbose-mode \
+               --enable-xlib-egl-platform \
+               --with-default-driver=gl \
+               --with-libcanberra \
+               $(usex debug --enable-debug=yes "") \
+               $(use_enable gles2)        \
+               $(use_enable gles2 cogl-gles2) \
+               $(use_enable introspection) \
+               $(use_enable wayland) \
+               $(use_enable wayland kms-egl-platform) \
+               $(use_enable wayland native-backend) \
+               $(use_enable wayland wayland-egl-server) \
+               $(use_with input_devices_wacom libwacom) \
+               $(use_with udev gudev)
+}
+
+src_test() {
+       virtx emake check
+}

Reply via email to