diff options
author | Mart Raudsepp <leio@gentoo.org> | 2017-05-13 19:42:19 +0300 |
---|---|---|
committer | Mart Raudsepp <leio@gentoo.org> | 2017-05-13 19:44:20 +0300 |
commit | 48829a034ee86281bc4c7bef35d8dc937624227b (patch) | |
tree | d7aaa0b95d9dd4256c94c1d46f0ce4f7bb5309db /x11-wm | |
parent | sci-chemistry/openbabel-python: Backport Fix for gcc 6/7 (diff) | |
download | gentoo-48829a034ee86281bc4c7bef35d8dc937624227b.tar.gz gentoo-48829a034ee86281bc4c7bef35d8dc937624227b.tar.bz2 gentoo-48829a034ee86281bc4c7bef35d8dc937624227b.zip |
x11-wm/mutter: revbump with various fixes, mostly for wayland session
Package-Manager: Portage-2.3.5, Repoman-2.3.2
Diffstat (limited to 'x11-wm')
6 files changed, 338 insertions, 0 deletions
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 000000000000..ed16b8c6f4b8 --- /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 <nigel@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 000000000000..24e6fd36a309 --- /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 <carlosg@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 000000000000..a6eddb1f72e0 --- /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?= <jadahl@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 000000000000..543d6edb8e76 --- /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 <ofourdan@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 000000000000..03b2b22fe655 --- /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 <ofourdan@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 000000000000..f4fe7fd851d0 --- /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 +} |