chore: Add mutter with xwayland fractional patch

This commit is contained in:
Kyle Gospodnetich 2024-05-13 15:34:05 -07:00
parent 8360bc2ad6
commit 63643aba49
8 changed files with 4486 additions and 0 deletions

View File

@ -0,0 +1,163 @@
From 21680b2f4edb064ff524cb91e9e20ace91deda6d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
Date: Sun, 21 Apr 2024 16:54:52 +0200
Subject: [PATCH 1/2] Revert "x11/window: Update comment and variable name to
reflect current behavior"
This reverts commit e4763d00e8512aeb408ae118597d753f12217487.
---
src/x11/window-x11.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/src/x11/window-x11.c b/src/x11/window-x11.c
index 6d2016e3ec..f6f7d87dfe 100644
--- a/src/x11/window-x11.c
+++ b/src/x11/window-x11.c
@@ -2476,20 +2476,21 @@ meta_window_x11_update_input_region (MetaWindow *window)
if (region != NULL)
{
- MtkRectangle bounding_rect;
+ MtkRectangle client_area;
- bounding_rect.x = 0;
- bounding_rect.y = 0;
- bounding_rect.width = window->buffer_rect.width;
- bounding_rect.height = window->buffer_rect.height;
+ client_area.x = 0;
+ client_area.y = 0;
+ client_area.width = window->buffer_rect.width;
+ client_area.height = window->buffer_rect.height;
/* The shape we get back from the client may have coordinates
* outside of the frame. The X SHAPE Extension requires that
* the overall shape the client provides never exceeds the
* "bounding rectangle" of the window -- the shape that the
- * window would have gotten if it was unshaped.
+ * window would have gotten if it was unshaped. In our case,
+ * this is simply the client area.
*/
- mtk_region_intersect_rectangle (region, &bounding_rect);
+ mtk_region_intersect_rectangle (region, &client_area);
}
meta_window_set_input_region (window, region);
--
2.44.0
From f1996e67ad8a5a0009e90c38767c8906e015ba70 Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
Date: Thu, 5 Oct 2023 13:09:46 -0700
Subject: [PATCH 2/2] Revert "x11: Use input region from frame window for
decorated windows"
This reverts commit d991961ae2a5c8cf2e58ff1072239f4902b0f767. It
seems to cause the broken mouse interaction bug reported in
https://bugzilla.redhat.com/show_bug.cgi?id=2239128 .
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3068
---
src/core/frame.c | 7 -------
src/x11/window-x11.c | 29 ++++++++++-------------------
2 files changed, 10 insertions(+), 26 deletions(-)
diff --git a/src/core/frame.c b/src/core/frame.c
index c74a2e04ec..5feb854805 100644
--- a/src/core/frame.c
+++ b/src/core/frame.c
@@ -35,7 +35,6 @@
#include "x11/window-props.h"
#include <X11/Xatom.h>
-#include <X11/extensions/shape.h>
#define EVENT_MASK (SubstructureRedirectMask | \
StructureNotifyMask | SubstructureNotifyMask | \
@@ -109,9 +108,6 @@ meta_window_x11_set_frame_xwindow (MetaWindow *window,
XChangeWindowAttributes (x11_display->xdisplay,
frame->xwindow, CWEventMask, &attrs);
- if (META_X11_DISPLAY_HAS_SHAPE (x11_display))
- XShapeSelectInput (x11_display->xdisplay, frame->xwindow, ShapeNotifyMask);
-
meta_x11_display_register_x_window (x11_display, &frame->xwindow, window);
if (window->mapped)
@@ -220,9 +216,6 @@ meta_window_destroy_frame (MetaWindow *window)
window->reparents_pending += 1;
}
- if (META_X11_DISPLAY_HAS_SHAPE (x11_display))
- XShapeSelectInput (x11_display->xdisplay, frame->xwindow, NoEventMask);
-
XDeleteProperty (x11_display->xdisplay,
meta_window_x11_get_xwindow (window),
x11_display->atom__MUTTER_NEEDS_FRAME);
diff --git a/src/x11/window-x11.c b/src/x11/window-x11.c
index f6f7d87dfe..1bc5c57a1a 100644
--- a/src/x11/window-x11.c
+++ b/src/x11/window-x11.c
@@ -2082,10 +2082,6 @@ meta_window_x11_constructed (GObject *object)
priv->keys_grabbed = FALSE;
priv->grab_on_frame = FALSE;
- g_signal_connect (window, "notify::decorated",
- G_CALLBACK (meta_window_x11_update_input_region),
- window);
-
G_OBJECT_CLASS (meta_window_x11_parent_class)->constructed (object);
}
@@ -2400,21 +2396,16 @@ meta_window_x11_update_input_region (MetaWindow *window)
g_autoptr (MtkRegion) region = NULL;
MetaWindowX11 *window_x11 = META_WINDOW_X11 (window);
MetaWindowX11Private *priv = meta_window_x11_get_instance_private (window_x11);
- Window xwindow;
+ /* Decorated windows don't have an input region, because
+ we don't shape the frame to match the client windows
+ (so the events are blocked by the frame anyway)
+ */
if (window->decorated)
{
- if (!window->frame)
- {
- if (priv->input_region)
- meta_window_set_input_region (window, NULL);
- return;
- }
- xwindow = window->frame->xwindow;
- }
- else
- {
- xwindow = priv->xwindow;
+ if (priv->input_region)
+ meta_window_set_input_region (window, NULL);
+ return;
}
if (META_X11_DISPLAY_HAS_SHAPE (x11_display))
@@ -2426,7 +2417,7 @@ meta_window_x11_update_input_region (MetaWindow *window)
mtk_x11_error_trap_push (x11_display->xdisplay);
rects = XShapeGetRectangles (x11_display->xdisplay,
- xwindow,
+ priv->xwindow,
ShapeInput,
&n_rects,
&ordering);
@@ -2480,8 +2471,8 @@ meta_window_x11_update_input_region (MetaWindow *window)
client_area.x = 0;
client_area.y = 0;
- client_area.width = window->buffer_rect.width;
- client_area.height = window->buffer_rect.height;
+ client_area.width = priv->client_rect.width;
+ client_area.height = priv->client_rect.height;
/* The shape we get back from the client may have coordinates
* outside of the frame. The X SHAPE Extension requires that
--
2.44.0

View File

@ -0,0 +1,145 @@
From e20ebeefa42997fe65008b11ef771c71b697273c Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
Date: Fri, 20 Oct 2023 22:12:23 -0700
Subject: [PATCH] modified 3329
Signed-off-by: Adam Williamson <awilliam@redhat.com>
---
src/compositor/meta-compositor-x11.c | 2 ++
src/core/display.c | 34 ----------------------------
src/tests/x11-test.sh | 3 +++
src/x11/meta-x11-display.c | 30 +++++++++++++++++++++++-
4 files changed, 34 insertions(+), 35 deletions(-)
diff --git a/src/compositor/meta-compositor-x11.c b/src/compositor/meta-compositor-x11.c
index 1ad3327dd..ce7bc1945 100644
--- a/src/compositor/meta-compositor-x11.c
+++ b/src/compositor/meta-compositor-x11.c
@@ -188,6 +188,8 @@ meta_compositor_x11_manage (MetaCompositor *compositor,
compositor_x11->have_x11_sync_object = meta_sync_ring_init (xdisplay);
+ meta_x11_display_redirect_windows (x11_display, display);
+
return TRUE;
}
diff --git a/src/core/display.c b/src/core/display.c
index 0a191c0fb..b16e50e21 100644
--- a/src/core/display.c
+++ b/src/core/display.c
@@ -930,9 +930,6 @@ meta_display_new (MetaContext *context,
MetaDisplay *display;
MetaDisplayPrivate *priv;
guint32 timestamp;
-#ifdef HAVE_X11_CLIENT
- Window old_active_xwindow = None;
-#endif
MetaMonitorManager *monitor_manager;
MetaSettings *settings;
MetaInputCapture *input_capture;
@@ -1048,14 +1045,6 @@ meta_display_new (MetaContext *context,
display->last_focus_time = timestamp;
display->last_user_time = timestamp;
-#ifdef HAVE_X11
- if (!meta_is_wayland_compositor ())
- meta_prop_get_window (display->x11_display,
- display->x11_display->xroot,
- display->x11_display->atom__NET_ACTIVE_WINDOW,
- &old_active_xwindow);
-#endif
-
if (!meta_compositor_manage (display->compositor, error))
{
g_object_unref (display);
@@ -1076,30 +1065,7 @@ meta_display_new (MetaContext *context,
g_signal_connect (display->gesture_tracker, "state-changed",
G_CALLBACK (gesture_tracker_state_changed), display);
- /* We know that if mutter is running as a Wayland compositor,
- * we start out with no windows.
- */
-#ifdef HAVE_X11_CLIENT
- if (!meta_is_wayland_compositor ())
- meta_display_manage_all_xwindows (display);
-
- if (old_active_xwindow != None)
- {
- MetaWindow *old_active_window;
- old_active_window = meta_x11_display_lookup_x_window (display->x11_display,
- old_active_xwindow);
- if (old_active_window)
- meta_window_focus (old_active_window, timestamp);
- else
- meta_display_unset_input_focus (display, timestamp);
- }
- else
- {
- meta_display_unset_input_focus (display, timestamp);
- }
-#else
meta_display_unset_input_focus (display, timestamp);
-#endif
g_signal_connect (stage, "notify::is-grabbed",
G_CALLBACK (on_is_grabbed_changed), display);
diff --git a/src/tests/x11-test.sh b/src/tests/x11-test.sh
index 59e460fc3..d95b2460f 100755
--- a/src/tests/x11-test.sh
+++ b/src/tests/x11-test.sh
@@ -34,6 +34,9 @@ echo \# Launched with pid $MUTTER2_PID
MUTTER2_PID=$!
wait $MUTTER1_PID
+echo \# Waiting for the second mutter to finish loading
+gdbus wait --session org.gnome.Mutter.IdleMonitor
+
sleep 2
echo \# Terminating clients > /dev/stderr
diff --git a/src/x11/meta-x11-display.c b/src/x11/meta-x11-display.c
index 4e98203dd..4ca620410 100644
--- a/src/x11/meta-x11-display.c
+++ b/src/x11/meta-x11-display.c
@@ -300,8 +300,36 @@ static void
on_x11_display_opened (MetaX11Display *x11_display,
MetaDisplay *display)
{
+ Window old_active_xwindow = None;
+
+ if (!meta_is_wayland_compositor ())
+ {
+ meta_prop_get_window (display->x11_display,
+ display->x11_display->xroot,
+ display->x11_display->atom__NET_ACTIVE_WINDOW,
+ &old_active_xwindow);
+ }
+
+ if (meta_is_wayland_compositor ())
+ meta_x11_display_redirect_windows (x11_display, display);
+
+
meta_display_manage_all_xwindows (display);
- meta_x11_display_redirect_windows (x11_display, display);
+
+ if (old_active_xwindow != None)
+ {
+ MetaWindow *old_active_window;
+
+ old_active_window = meta_x11_display_lookup_x_window (x11_display,
+ old_active_xwindow);
+ if (old_active_window)
+ {
+ uint32_t timestamp;
+
+ timestamp = display->x11_display->timestamp;
+ meta_window_focus (old_active_window, timestamp);
+ }
+ }
}
static void
--
2.41.0

View File

@ -0,0 +1,28 @@
From 692546a9701a7b363e6190af441a95385c244907 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
Date: Fri, 2 Dec 2022 22:49:41 +0100
Subject: [PATCH] place: Always center initial-setup/fedora-welcome
---
src/core/place.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/core/place.c b/src/core/place.c
index f9877dfc7..a69a3ebd1 100644
--- a/src/core/place.c
+++ b/src/core/place.c
@@ -321,6 +321,11 @@ window_place_centered (MetaWindow *window)
type = window->type;
+ if (g_strcmp0 (meta_window_get_wm_class (window), "org.gnome.InitialSetup") == 0 ||
+ g_strcmp0 (meta_window_get_wm_class (window), "org.fedoraproject.welcome-screen") == 0 ||
+ g_strcmp0 (meta_window_get_wm_class (window), "fedora-welcome") == 0)
+ return TRUE;
+
return (type == META_WINDOW_DIALOG ||
type == META_WINDOW_MODAL_DIALOG ||
type == META_WINDOW_SPLASHSCREEN ||
--
2.39.2

View File

@ -0,0 +1,70 @@
From b3b5aa01c63aee1df079e0394b0e6372df1838d0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
Date: Fri, 12 May 2017 13:40:31 +0200
Subject: [PATCH] window-actor: Special-case shaped Java windows
OpenJDK wrongly assumes that shaping a window implies no shadows.
They got lucky until commit b975676c changed the fallback case,
but now their compliance tests are broken. Make them happy again
by special-casing shaped Java windows.
---
src/compositor/meta-window-actor-x11.c | 8 ++++++++
src/x11/window-x11-private.h | 2 ++
src/x11/window-x11.c | 9 +++++++++
3 files changed, 19 insertions(+)
diff --git a/src/compositor/meta-window-actor-x11.c b/src/compositor/meta-window-actor-x11.c
index 19827af331..7d5e46ac75 100644
--- a/src/compositor/meta-window-actor-x11.c
+++ b/src/compositor/meta-window-actor-x11.c
@@ -424,6 +424,14 @@ has_shadow (MetaWindowActorX11 *actor_x11)
*/
if (window->has_custom_frame_extents)
return FALSE;
+
+ /*
+ * OpenJDK wrongly assumes that shaping a window implies no compositor
+ * shadows; make its compliance tests happy to give it what it wants ...
+ */
+ if (g_strcmp0 (window->res_name, "sun-awt-X11-XWindowPeer") == 0 &&
+ meta_window_x11_is_shaped (window))
+ return FALSE;
/*
* Generate shadows for all other windows.
diff --git a/src/x11/window-x11-private.h b/src/x11/window-x11-private.h
index c947744ee5..cb862f0d72 100644
--- a/src/x11/window-x11-private.h
+++ b/src/x11/window-x11-private.h
@@ -125,6 +125,8 @@ gboolean meta_window_x11_has_pointer (MetaWindow *window);
gboolean meta_window_x11_same_application (MetaWindow *window,
MetaWindow *other_window);
+gboolean meta_window_x11_is_shaped (MetaWindow *window);
+
void meta_window_x11_shutdown_group (MetaWindow *window);
META_EXPORT
diff --git a/src/x11/window-x11.c b/src/x11/window-x11.c
index 745c45db18..83cdd2e420 100644
--- a/src/x11/window-x11.c
+++ b/src/x11/window-x11.c
@@ -2585,6 +2585,15 @@ meta_window_x11_update_shape_region (MetaWindow *window)
meta_window_set_shape_region (window, region);
}
+gboolean
+meta_window_x11_is_shaped (MetaWindow *window)
+{
+ MetaWindowX11 *window_x11 = META_WINDOW_X11 (window);
+ MetaWindowX11Private *priv = meta_window_x11_get_instance_private (window_x11);
+
+ return priv->shape_region != NULL;
+}
+
/* Generally meta_window_x11_same_application() is a better idea
* of "sameness", since it handles the case where multiple apps
* want to look like the same app or the same app wants to look
--
2.43.2

1868
spec_files/mutter/1441.patch Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,25 @@
From a5c67e0debaa89f7a73452560664cdc5c581ab95 Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
Date: Tue, 9 Mar 2021 17:21:59 -0800
Subject: [PATCH] Test: deny atomic KMS for "tegra" (RHBZ #1936991)
Signed-off-by: Adam Williamson <awilliam@redhat.com>
---
src/backends/native/meta-kms-impl-device-atomic.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/backends/native/meta-kms-impl-device-atomic.c b/src/backends/native/meta-kms-impl-device-atomic.c
index 35837f7429..ffff7b8e23 100644
--- a/src/backends/native/meta-kms-impl-device-atomic.c
+++ b/src/backends/native/meta-kms-impl-device-atomic.c
@@ -1352,6 +1352,7 @@ is_atomic_allowed (const char *driver_name)
{
const char *atomic_driver_deny_list[] = {
"xlnx",
+ "tegra",
NULL,
};
--
2.43.0

View File

@ -0,0 +1,223 @@
%global glib_version 2.75.1
%global gtk3_version 3.19.8
%global gtk4_version 4.0.0
%global gsettings_desktop_schemas_version 40~alpha
%global json_glib_version 0.12.0
%global libinput_version 1.19.0
%global pipewire_version 0.3.33
%global lcms2_version 2.6
%global colord_version 1.4.5
%global libei_version 1.0.0
%global mutter_api_version 14
%global gnome_major_version 46
%global gnome_version %{gnome_major_version}.1
%global tarball_version %%(echo %{gnome_version} | tr '~' '.')
%global _default_patch_fuzz 2
Name: mutter
Version: %{gnome_version}.ublue.{{{ git_dir_version }}}
Release: 2%{?dist}
Summary: Window and compositing manager based on Clutter
License: GPLv2+
URL: http://www.gnome.org
Source0: https://download.gnome.org/sources/%{name}/%{gnome_major_version}/%{name}-%{tarball_version}.tar.xz
# Work-around for OpenJDK's compliance test
Patch0: 0001-window-actor-Special-case-shaped-Java-windows.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1936991
Patch1: mutter-42.alpha-disable-tegra.patch
# https://pagure.io/fedora-workstation/issue/79
Patch2: 0001-place-Always-center-initial-setup-fedora-welcome.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=2239128
# https://gitlab.gnome.org/GNOME/mutter/-/issues/3068
# not upstreamed because for upstream we'd really want to find a way
# to fix *both* problems
Patch3: 0001-Revert-x11-Use-input-region-from-frame-window-for-de.patch
# https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3329
# Modified to add the change from
# https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3329#note_1874837
# which solves the problems reported with #3329 alone
Patch4: 0001-modified-3329.patch
# https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1441
Patch5: 1441.patch
# https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3567
Patch6: 3720+3567.patch
BuildRequires: pkgconfig(gobject-introspection-1.0) >= 1.41.0
BuildRequires: pkgconfig(sm)
BuildRequires: pkgconfig(libwacom)
BuildRequires: pkgconfig(x11)
BuildRequires: pkgconfig(xdamage)
BuildRequires: pkgconfig(xext)
BuildRequires: pkgconfig(xfixes)
BuildRequires: pkgconfig(xi)
BuildRequires: pkgconfig(xrandr)
BuildRequires: pkgconfig(xrender)
BuildRequires: pkgconfig(xcursor)
BuildRequires: pkgconfig(xcomposite)
BuildRequires: pkgconfig(x11-xcb)
BuildRequires: pkgconfig(xkbcommon)
BuildRequires: pkgconfig(xkbcommon-x11)
BuildRequires: pkgconfig(xkbfile)
BuildRequires: pkgconfig(xtst)
BuildRequires: mesa-libEGL-devel
BuildRequires: mesa-libGLES-devel
BuildRequires: mesa-libGL-devel
BuildRequires: mesa-libgbm-devel
BuildRequires: pkgconfig(glesv2)
BuildRequires: pkgconfig(graphene-gobject-1.0)
BuildRequires: pam-devel
BuildRequires: pkgconfig(libdisplay-info)
BuildRequires: pkgconfig(libpipewire-0.3) >= %{pipewire_version}
BuildRequires: pkgconfig(sysprof-capture-4)
BuildRequires: sysprof-devel
BuildRequires: pkgconfig(libsystemd)
BuildRequires: xorg-x11-server-Xorg
BuildRequires: xorg-x11-server-Xvfb
BuildRequires: pkgconfig(xkeyboard-config)
BuildRequires: desktop-file-utils
# Bootstrap requirements
BuildRequires: gettext-devel git-core
BuildRequires: pkgconfig(libcanberra)
BuildRequires: pkgconfig(gsettings-desktop-schemas) >= %{gsettings_desktop_schemas_version}
BuildRequires: pkgconfig(gnome-settings-daemon)
BuildRequires: meson
BuildRequires: pkgconfig(gbm)
BuildRequires: pkgconfig(gnome-desktop-4)
BuildRequires: pkgconfig(gudev-1.0)
BuildRequires: pkgconfig(libdrm)
BuildRequires: pkgconfig(libstartup-notification-1.0)
BuildRequires: pkgconfig(wayland-eglstream)
BuildRequires: pkgconfig(wayland-protocols)
BuildRequires: pkgconfig(wayland-server)
BuildRequires: pkgconfig(lcms2) >= %{lcms2_version}
BuildRequires: pkgconfig(colord) >= %{colord_version}
BuildRequires: pkgconfig(libei-1.0) >= %{libei_version}
BuildRequires: pkgconfig(libeis-1.0) >= %{libei_version}
BuildRequires: pkgconfig(json-glib-1.0) >= %{json_glib_version}
BuildRequires: pkgconfig(libinput) >= %{libinput_version}
BuildRequires: pkgconfig(xwayland)
BuildRequires: python3-dbusmock
Requires: control-center-filesystem
Requires: gsettings-desktop-schemas%{?_isa} >= %{gsettings_desktop_schemas_version}
Requires: gnome-settings-daemon
Requires: gtk4%{?_isa} >= %{gtk4_version}
Requires: json-glib%{?_isa} >= %{json_glib_version}
Requires: libinput%{?_isa} >= %{libinput_version}
Requires: pipewire%{_isa} >= %{pipewire_version}
Requires: startup-notification
Requires: dbus
# Need common
Requires: %{name}-common = %{version}-%{release}
Recommends: mesa-dri-drivers%{?_isa}
Provides: firstboot(windowmanager) = mutter
# Cogl and Clutter were forked at these versions, but have diverged
# significantly since then.
Provides: bundled(cogl) = 1.22.0
Provides: bundled(clutter) = 1.26.0
Provides: mutter = %{gnome_version}-%{release}
Conflicts: mutter < 45~beta.1-2
# Make sure dnf updates gnome-shell together with this package; otherwise we
# might end up with broken gnome-shell installations due to mutter ABI changes.
Conflicts: gnome-shell < 45~rc
%description
Mutter is a window and compositing manager that displays and manages
your desktop via OpenGL. Mutter combines a sophisticated display engine
using the Clutter toolkit with solid window-management logic inherited
from the Metacity window manager.
While Mutter can be used stand-alone, it is primarily intended to be
used as the display core of a larger system such as GNOME Shell. For
this reason, Mutter is very extensible via plugins, which are used both
to add fancy visual effects and to rework the window management
behaviors to meet the needs of the environment.
%package common
Summary: Common files used by %{name} and forks of %{name}
BuildArch: noarch
Conflicts: mutter < 45~beta.1-2
Provides: mutter-common = %{gnome_version}-%{release}
%description common
Common files used by Mutter and soft forks of Mutter
%package devel
Summary: Development package for %{name}
Requires: %{name}%{?_isa} = %{version}-%{release}
# for EGL/eglmesaext.h that's included from public cogl-egl-defines.h header
Requires: mesa-libEGL-devel
%description devel
Header files and libraries for developing Mutter plugins. Also includes
utilities for testing Metacity/Mutter themes.
%package tests
Summary: Tests for the %{name} package
Requires: %{name}-devel%{?_isa} = %{version}-%{release}
Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: gtk3%{?_isa} >= %{gtk3_version}
%description tests
The %{name}-tests package contains tests that can be used to verify
the functionality of the installed %{name} package.
%prep
%autosetup -S git -n %{name}-%{tarball_version}
%build
%meson -Degl_device=true -Dwayland_eglstream=true
%meson_build
%install
%meson_install
%find_lang %{name}
%files -f %{name}.lang
%license COPYING
%doc NEWS
%{_bindir}/mutter
%{_libdir}/lib*.so.*
%{_libdir}/mutter-%{mutter_api_version}/
%{_libexecdir}/mutter-restart-helper
%{_libexecdir}/mutter-x11-frames
%{_mandir}/man1/mutter.1*
%files common
%{_datadir}/GConf/gsettings/mutter-schemas.convert
%{_datadir}/glib-2.0/schemas/org.gnome.mutter.gschema.xml
%{_datadir}/glib-2.0/schemas/org.gnome.mutter.wayland.gschema.xml
%{_datadir}/gnome-control-center/keybindings/50-mutter-*.xml
%{_udevrulesdir}/61-mutter.rules
%files devel
%{_includedir}/*
%{_libdir}/lib*.so
%{_libdir}/pkgconfig/*
%files tests
%{_libexecdir}/installed-tests/mutter-%{mutter_api_version}
%{_datadir}/installed-tests/mutter-%{mutter_api_version}
%{_datadir}/mutter-%{mutter_api_version}/tests
%changelog
%autochangelog