2025-03-31 10:05:17 +00:00
committed by Git OBS Bridge
commit b9e43f2c93
27 changed files with 8777 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
.osc

View File

@@ -0,0 +1,141 @@
From d11feddbb29f0bf6de104d8d5c54cf18f3ca96da Mon Sep 17 00:00:00 2001
From: Alynx Zhou <alynx.zhou@gmail.com>
Date: Thu, 14 Mar 2024 19:20:57 +0800
Subject: [PATCH] Revert "clutter/actor: Cache stage-relative instead of
absolute modelviews"
This reverts commit 703bbe0e99dbb688352e0bff396e5cbf2c6af45b.
---
clutter/clutter/clutter-actor.c | 67 ++++++++++-----------------------
1 file changed, 20 insertions(+), 47 deletions(-)
Index: mutter-48.0/clutter/clutter/clutter-actor.c
===================================================================
--- mutter-48.0.orig/clutter/clutter/clutter-actor.c
+++ mutter-48.0/clutter/clutter/clutter-actor.c
@@ -581,7 +581,7 @@ struct _ClutterActorPrivate
/* the cached transformation matrix; see apply_transform() */
graphene_matrix_t transform;
- graphene_matrix_t stage_relative_modelview;
+ graphene_matrix_t absolute_modelview;
float resource_scale;
@@ -747,7 +747,7 @@ struct _ClutterActorPrivate
guint clear_stage_views_needs_stage_views_changed : 1;
guint needs_redraw : 1;
guint needs_finish_layout : 1;
- guint stage_relative_modelview_valid : 1;
+ guint absolute_modelview_valid : 1;
};
enum
@@ -2345,7 +2345,7 @@ absolute_geometry_changed (ClutterActor
{
actor->priv->needs_update_stage_views = TRUE;
actor->priv->needs_visible_paint_volume_update = TRUE;
- actor->priv->stage_relative_modelview_valid = FALSE;
+ actor->priv->absolute_modelview_valid = FALSE;
actor->priv->needs_finish_layout = TRUE;
/* needs_finish_layout is already TRUE on the whole parent tree thanks
@@ -2974,9 +2974,8 @@ _clutter_actor_apply_relative_transforma
graphene_matrix_t *matrix)
{
ClutterActorPrivate *priv = self->priv;
- ClutterActor *stage = _clutter_actor_get_stage_internal (self);
- graphene_matrix_t ancestor_modelview;
- graphene_matrix_t inverse_ancestor_modelview;
+ graphene_matrix_t parent_modelview;
+ graphene_matrix_t inverse_parent_modelview;
/* Note we terminate before ever calling stage->apply_transform()
* since that would conceptually be relative to the underlying
@@ -2985,63 +2984,37 @@ _clutter_actor_apply_relative_transforma
if (self == ancestor)
return;
- if (!priv->stage_relative_modelview_valid)
+ if (!priv->absolute_modelview_valid)
{
- graphene_matrix_init_identity (&priv->stage_relative_modelview);
+ graphene_matrix_init_identity (&priv->absolute_modelview);
if (priv->parent != NULL)
{
_clutter_actor_apply_relative_transformation_matrix (priv->parent,
- stage,
- &priv->stage_relative_modelview);
+ NULL,
+ &priv->absolute_modelview);
}
- _clutter_actor_apply_modelview_transform (self,
- &priv->stage_relative_modelview);
+ _clutter_actor_apply_modelview_transform (self, &priv->absolute_modelview);
- priv->stage_relative_modelview_valid = TRUE;
+ priv->absolute_modelview_valid = TRUE;
}
if (ancestor == NULL)
{
- _clutter_actor_apply_modelview_transform (stage, matrix);
- graphene_matrix_multiply (&priv->stage_relative_modelview, matrix, matrix);
- return;
- }
-
- if (ancestor == stage)
- {
- graphene_matrix_multiply (&priv->stage_relative_modelview, matrix, matrix);
- return;
- }
-
- if (ancestor == priv->parent)
- {
- _clutter_actor_apply_modelview_transform (self, matrix);
+ graphene_matrix_multiply (&priv->absolute_modelview, matrix, matrix);
return;
}
- graphene_matrix_init_identity (&ancestor_modelview);
+ graphene_matrix_init_identity (&parent_modelview);
_clutter_actor_apply_relative_transformation_matrix (ancestor,
- stage,
- &ancestor_modelview);
-
- if (graphene_matrix_near (&priv->stage_relative_modelview,
- &ancestor_modelview,
- FLT_EPSILON))
- return;
-
- if (graphene_matrix_is_identity (&ancestor_modelview))
- {
- graphene_matrix_multiply (&priv->stage_relative_modelview, matrix, matrix);
- return;
- }
-
- if (graphene_matrix_inverse (&ancestor_modelview,
- &inverse_ancestor_modelview))
+ NULL,
+ &parent_modelview);
+ if (graphene_matrix_inverse (&parent_modelview,
+ &inverse_parent_modelview))
{
- graphene_matrix_multiply (&inverse_ancestor_modelview, matrix, matrix);
- graphene_matrix_multiply (&priv->stage_relative_modelview, matrix, matrix);
+ graphene_matrix_multiply (&inverse_parent_modelview, matrix, matrix);
+ graphene_matrix_multiply (&priv->absolute_modelview, matrix, matrix);
return;
}
@@ -7535,7 +7508,7 @@ clutter_actor_init (ClutterActor *self)
priv->enable_model_view_transform = TRUE;
priv->transform_valid = FALSE;
- priv->stage_relative_modelview_valid = FALSE;
+ priv->absolute_modelview_valid = FALSE;
/* the default is to stretch the content, to match the
* current behaviour of basically all actors. also, it's

View File

@@ -0,0 +1,296 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: "Jan Alexander Steffens (heftig)" <heftig@archlinux.org>
Date: Tue, 18 Mar 2025 22:58:37 +0100
Subject: [PATCH] cursor: Unify prepare_func for shape cursors
Move the root cursor prepare function into MetaCursorSpriteXcursor to
become its default prepare function. This should solve two issues:
- The root cursor prepare function was changed in f77d8e2a12a07ef6abe9
to solve an issue with fractional scales. The tool cursor prepare
function was missing this fix.
- The cursors created via the shape protocol had no prepare function at
all, so were not getting scaled.
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3975
---
src/backends/meta-cursor-sprite-xcursor.c | 57 ++++++++++++++++++++
src/core/display.c | 63 ++---------------------
src/wayland/meta-wayland-tablet-tool.c | 39 --------------
3 files changed, 60 insertions(+), 99 deletions(-)
diff --git a/src/backends/meta-cursor-sprite-xcursor.c b/src/backends/meta-cursor-sprite-xcursor.c
index a4b9cbb988ab..dc2580f65db9 100644
--- a/src/backends/meta-cursor-sprite-xcursor.c
+++ b/src/backends/meta-cursor-sprite-xcursor.c
@@ -24,6 +24,7 @@
#include "backends/meta-cursor.h"
#include "backends/meta-cursor-renderer.h"
#include "backends/meta-cursor-tracker-private.h"
+#include "backends/meta-logical-monitor.h"
#include "clutter/clutter.h"
#include "cogl/cogl.h"
#include "meta/prefs.h"
@@ -510,22 +511,78 @@ meta_cursor_sprite_xcursor_new (MetaCursor cursor,
return sprite_xcursor;
}
+static void
+xcursor_prepare_at (MetaCursorSpriteXcursor *sprite_xcursor,
+ float best_scale,
+ int x,
+ int y,
+ void *user_data)
+{
+ MetaCursorSprite *cursor_sprite = META_CURSOR_SPRITE (sprite_xcursor);
+ MetaCursorTracker *cursor_tracker =
+ meta_cursor_sprite_get_cursor_tracker (cursor_sprite);
+ MetaBackend *backend =
+ meta_cursor_tracker_get_backend (cursor_tracker);
+
+ if (meta_backend_is_stage_views_scaled (backend))
+ {
+ if (best_scale != 0.0f)
+ {
+ float ceiled_scale;
+ int cursor_width, cursor_height;
+
+ ceiled_scale = ceilf (best_scale);
+ meta_cursor_sprite_xcursor_set_theme_scale (sprite_xcursor,
+ (int) ceiled_scale);
+
+ meta_cursor_sprite_realize_texture (cursor_sprite);
+ meta_cursor_sprite_xcursor_get_scaled_image_size (sprite_xcursor,
+ &cursor_width,
+ &cursor_height);
+ meta_cursor_sprite_set_viewport_dst_size (cursor_sprite,
+ cursor_width,
+ cursor_height);
+ }
+ }
+ else
+ {
+ MetaMonitorManager *monitor_manager =
+ meta_backend_get_monitor_manager (backend);
+ MetaLogicalMonitor *logical_monitor;
+
+ logical_monitor =
+ meta_monitor_manager_get_logical_monitor_at (monitor_manager, x, y);
+
+ /* Reload the cursor texture if the scale has changed. */
+ if (logical_monitor)
+ {
+ meta_cursor_sprite_xcursor_set_theme_scale (sprite_xcursor,
+ (int) logical_monitor->scale);
+ meta_cursor_sprite_set_texture_scale (cursor_sprite, 1.0f);
+ }
+ }
+}
+
static void
meta_cursor_sprite_xcursor_finalize (GObject *object)
{
MetaCursorSpriteXcursor *sprite_xcursor = META_CURSOR_SPRITE_XCURSOR (object);
g_clear_pointer (&sprite_xcursor->xcursor_images,
xcursor_images_destroy);
G_OBJECT_CLASS (meta_cursor_sprite_xcursor_parent_class)->finalize (object);
}
static void
meta_cursor_sprite_xcursor_init (MetaCursorSpriteXcursor *sprite_xcursor)
{
sprite_xcursor->theme_scale = 1;
sprite_xcursor->theme_dirty = TRUE;
+
+ meta_cursor_sprite_set_prepare_func (META_CURSOR_SPRITE (sprite_xcursor),
+ (MetaCursorPrepareFunc) xcursor_prepare_at,
+ NULL);
}
static void
diff --git a/src/core/display.c b/src/core/display.c
index ae66a0cfcb8e..2bdf5be44c2c 100644
--- a/src/core/display.c
+++ b/src/core/display.c
@@ -1681,76 +1681,19 @@ meta_display_notify_window_created (MetaDisplay *display,
g_signal_emit (display, display_signals[WINDOW_CREATED], 0, window);
}
-static void
-root_cursor_prepare_at (MetaCursorSpriteXcursor *sprite_xcursor,
- float best_scale,
- int x,
- int y,
- MetaDisplay *display)
-{
- MetaCursorSprite *cursor_sprite = META_CURSOR_SPRITE (sprite_xcursor);
- MetaBackend *backend = backend_from_display (display);
-
- if (meta_backend_is_stage_views_scaled (backend))
- {
- if (best_scale != 0.0f)
- {
- float ceiled_scale;
- int cursor_width, cursor_height;
-
- ceiled_scale = ceilf (best_scale);
- meta_cursor_sprite_xcursor_set_theme_scale (sprite_xcursor,
- (int) ceiled_scale);
-
- meta_cursor_sprite_realize_texture (cursor_sprite);
- meta_cursor_sprite_xcursor_get_scaled_image_size (sprite_xcursor,
- &cursor_width,
- &cursor_height);
- meta_cursor_sprite_set_viewport_dst_size (cursor_sprite,
- cursor_width,
- cursor_height);
- }
- }
- else
- {
- MetaMonitorManager *monitor_manager =
- meta_backend_get_monitor_manager (backend);
- MetaLogicalMonitor *logical_monitor;
-
- logical_monitor =
- meta_monitor_manager_get_logical_monitor_at (monitor_manager, x, y);
-
- /* Reload the cursor texture if the scale has changed. */
- if (logical_monitor)
- {
- meta_cursor_sprite_xcursor_set_theme_scale (sprite_xcursor,
- (int) logical_monitor->scale);
- meta_cursor_sprite_set_texture_scale (cursor_sprite, 1.0f);
- }
- }
-}
-
-static void
-manage_root_cursor_sprite_scale (MetaDisplay *display,
- MetaCursorSpriteXcursor *sprite_xcursor)
-{
- meta_cursor_sprite_set_prepare_func (META_CURSOR_SPRITE (sprite_xcursor),
- (MetaCursorPrepareFunc) root_cursor_prepare_at,
- display);
-}
-
void
meta_display_reload_cursor (MetaDisplay *display)
{
MetaCursor cursor = display->current_cursor;
MetaCursorSpriteXcursor *sprite_xcursor;
MetaBackend *backend = backend_from_display (display);
MetaCursorTracker *cursor_tracker = meta_backend_get_cursor_tracker (backend);
sprite_xcursor = meta_cursor_sprite_xcursor_new (cursor, cursor_tracker);
- if (meta_is_wayland_compositor ())
- manage_root_cursor_sprite_scale (display, sprite_xcursor);
+ if (!meta_is_wayland_compositor ())
+ meta_cursor_sprite_set_prepare_func (META_CURSOR_SPRITE (sprite_xcursor),
+ NULL, NULL);
meta_cursor_tracker_set_root_cursor (cursor_tracker,
META_CURSOR_SPRITE (sprite_xcursor));
diff --git a/src/wayland/meta-wayland-tablet-tool.c b/src/wayland/meta-wayland-tablet-tool.c
index 86523918ba34..8306babf0cf3 100644
--- a/src/wayland/meta-wayland-tablet-tool.c
+++ b/src/wayland/meta-wayland-tablet-tool.c
@@ -32,7 +32,6 @@
#include "wayland/meta-wayland-tablet.h"
#include "wayland/meta-wayland-tablet-seat.h"
#include "backends/meta-input-settings-private.h"
-#include "backends/meta-logical-monitor.h"
#include "tablet-unstable-v2-server-protocol.h"
@@ -425,87 +424,49 @@ tablet_tool_handle_cursor_surface_destroy (struct wl_listener *listener,
meta_wayland_tablet_tool_set_cursor_surface (tool, NULL);
}
-static void
-tool_cursor_prepare_at (MetaCursorSpriteXcursor *sprite_xcursor,
- float best_scale,
- int x,
- int y,
- MetaWaylandTabletTool *tool)
-{
- MetaBackend *backend = backend_from_tool (tool);
- MetaMonitorManager *monitor_manager =
- meta_backend_get_monitor_manager (backend);
- MetaLogicalMonitor *logical_monitor;
-
- logical_monitor =
- meta_monitor_manager_get_logical_monitor_at (monitor_manager, x, y);
-
- /* Reload the cursor texture if the scale has changed. */
- if (logical_monitor)
- {
- MetaCursorSprite *cursor_sprite = META_CURSOR_SPRITE (sprite_xcursor);
- float ceiled_scale;
-
- ceiled_scale = ceilf (logical_monitor->scale);
- meta_cursor_sprite_xcursor_set_theme_scale (sprite_xcursor,
- (int) ceiled_scale);
-
- if (meta_backend_is_stage_views_scaled (backend))
- meta_cursor_sprite_set_texture_scale (cursor_sprite,
- 1.0f / ceiled_scale);
- else
- meta_cursor_sprite_set_texture_scale (cursor_sprite, 1.0f);
- }
-}
-
MetaWaylandTabletTool *
meta_wayland_tablet_tool_new (MetaWaylandTabletSeat *seat,
ClutterInputDeviceTool *device_tool)
{
MetaWaylandCompositor *compositor =
meta_wayland_seat_get_compositor (seat->seat);
MetaContext *context = meta_wayland_compositor_get_context (compositor);
MetaBackend *backend = meta_context_get_backend (context);
MetaCursorTracker *cursor_tracker = meta_backend_get_cursor_tracker (backend);
MetaWaylandTabletTool *tool;
tool = g_new0 (MetaWaylandTabletTool, 1);
tool->seat = seat;
tool->device_tool = device_tool;
wl_list_init (&tool->resource_list);
wl_list_init (&tool->focus_resource_list);
tool->focus_surface_destroy_listener.notify = tablet_tool_handle_focus_surface_destroy;
tool->cursor_surface_destroy_listener.notify = tablet_tool_handle_cursor_surface_destroy;
tool->default_sprite = meta_cursor_sprite_xcursor_new (META_CURSOR_DEFAULT,
cursor_tracker);
- meta_cursor_sprite_set_prepare_func (META_CURSOR_SPRITE (tool->default_sprite),
- (MetaCursorPrepareFunc) tool_cursor_prepare_at,
- tool);
return tool;
}
void
meta_wayland_tablet_tool_free (MetaWaylandTabletTool *tool)
{
struct wl_resource *resource, *next;
meta_wayland_tablet_tool_set_current_surface (tool, NULL);
meta_wayland_tablet_tool_set_focus (tool, NULL, NULL);
meta_wayland_tablet_tool_set_cursor_surface (tool, NULL);
g_clear_object (&tool->cursor_renderer);
wl_resource_for_each_safe (resource, next, &tool->resource_list)
{
zwp_tablet_tool_v2_send_removed (resource);
wl_list_remove (wl_resource_get_link (resource));
wl_list_init (wl_resource_get_link (resource));
}
- meta_cursor_sprite_set_prepare_func (META_CURSOR_SPRITE (tool->default_sprite),
- NULL, NULL);
g_object_unref (tool->default_sprite);
g_free (tool);

26
_service Normal file
View File

@@ -0,0 +1,26 @@
<?xml version="1.0"?>
<services>
<service name="obs_scm" mode="manual">
<param name="scm">git</param>
<param name="url">https://gitlab.gnome.org/GNOME/mutter.git</param>
<param name="revision">626d5642d13299403c4bd7c87147395ef435faf9</param>
<param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
<param name="versionrewrite-pattern">(.*)\+0</param>
<param name="versionrewrite-replacement">\1</param>
<param name="changesgenerate">enable</param>
</service>
<service name="obs_scm" mode="manual">
<param name="scm">git</param>
<param name="url">https://gitlab.gnome.org/GNOME/gvdb.git</param>
<param name="revision">b54bc5da25127ef416858a3ad92e57159ff565b3</param>
<param name="versionformat">0.gitmodule</param>
</service>
<service name="tar" mode="buildtime"/>
<service name="recompress" mode="buildtime">
<param name="file">*.tar</param>
<param name="compression">zst</param>
</service>
<service name="set_version" mode="manual">
<param name="basename">mutter</param>
</service>
</services>

4
_servicedata Normal file
View File

@@ -0,0 +1,4 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://gitlab.gnome.org/GNOME/mutter.git</param>
<param name="changesrevision">626d5642d13299403c4bd7c87147395ef435faf9</param></service></servicedata>

BIN
gvdb-0.gitmodule.obscpio (Stored with Git LFS) Normal file

Binary file not shown.

4
gvdb.obsinfo Normal file
View File

@@ -0,0 +1,4 @@
name: gvdb
version: 0.gitmodule
mtime: 1725181085
commit: b54bc5da25127ef416858a3ad92e57159ff565b3

3
mutter-46.4.obscpio Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:7a367792ce83f6f216543816823ee7d0e3a4cdc85cb6adb595f6f8e618ad40a4
size 30414861

3
mutter-46.5.obscpio Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:093c3af614855f15c9a65c1a883f4213086a803144bf76f22e18ff86da6e380f
size 30423053

3
mutter-47.0+19.obscpio Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:adae22c4ec06cd0f2c7f25a2fda1e58196ba2cb227d719d0ac0a18a16c04d973
size 30738445

3
mutter-47.1+3.obscpio Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:52424af885ca83172a53f253caebcff7b75a9773079b5c6cac55b471034e72fd
size 30739469

BIN
mutter-47.1.obscpio (Stored with Git LFS) Normal file

Binary file not shown.

3
mutter-47.2.obscpio Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c7f146405c5a4979ac3155d6500f4959eeb655aa506d821d9f78be71170bf205
size 30761485

3
mutter-47.3.obscpio Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4ead7c02425db1d9936b3886923d8e56fb354e97612d03f2f3150015c19145ae
size 30768653

3
mutter-47.4.obscpio Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d0e2a7dcfaac3b225c456ab3cbff19c3850b39005a3577a6e5926488136ce96e
size 31219725

BIN
mutter-47.5.obscpio (Stored with Git LFS) Normal file

Binary file not shown.

3
mutter-47.6.obscpio Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c84eedf079d4e30a17782a5a2fd78ee1e33ccdd9cd98ba408f4074d87ec2278d
size 31225357

3
mutter-48.0+38.obscpio Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:cb328b123880ad5a72b3dcc76c058ff30657d7d3004b22a08a933b564629c4f8
size 45989389

BIN
mutter-48.0+5.obscpio (Stored with Git LFS) Normal file

Binary file not shown.

119
mutter-SLE-bell.patch Normal file
View File

@@ -0,0 +1,119 @@
diff --unified --recursive --text --new-file --color mutter-40.0.old/data/org.gnome.mutter.gschema.xml.in mutter-40.0.new/data/org.gnome.mutter.gschema.xml.in
--- mutter-40.0.old/data/org.gnome.mutter.gschema.xml.in 2021-04-23 08:52:33.870911873 +0800
+++ mutter-40.0.new/data/org.gnome.mutter.gschema.xml.in 2021-04-23 08:53:11.404056017 +0800
@@ -156,6 +156,16 @@
</description>
</key>
+ <key name="audible-bell-force-through-server" type="b">
+ <default>false</default>
+ <summary>Force the System Bell through the X server only.</summary>
+ <description>
+ Force the System Bell through the X server only for systems that
+ do not want to go through the sound card - for example that don't
+ have speakers.
+ </description>
+ </key>
+
<child name="keybindings" schema="org.gnome.mutter.keybindings"/>
</schema>
diff --unified --recursive --text --new-file --color mutter-40.0.old/src/core/bell.c mutter-40.0.new/src/core/bell.c
--- mutter-40.0.old/src/core/bell.c 2021-04-23 08:52:33.877578506 +0800
+++ mutter-40.0.new/src/core/bell.c 2021-04-23 08:53:11.404056017 +0800
@@ -54,6 +54,11 @@
#include "core/window-private.h"
#include "meta/compositor.h"
+#include "meta/display.h"
+#include "meta/meta-x11-display.h"
+#include <X11/Xlib.h>
+#include <X11/XKBlib.h>
+
G_DEFINE_TYPE (MetaBell, meta_bell, G_TYPE_OBJECT)
enum
@@ -202,6 +207,14 @@
if (meta_prefs_get_visual_bell ())
bell_visual_notify (display, window);
+ if (meta_prefs_bell_force_through_server ())
+ {
+ MetaX11Display *x11_display = meta_display_get_x11_display (display);
+ Display *xdisplay = meta_x11_display_get_xdisplay (x11_display);
+ XkbForceBell (xdisplay, 100);
+ return TRUE;
+ }
+
if (meta_prefs_bell_is_audible ())
return bell_audible_notify (display, window);
diff --unified --recursive --text --new-file --color mutter-40.0.old/src/core/prefs.c mutter-40.0.new/src/core/prefs.c
--- mutter-40.0.old/src/core/prefs.c 2021-04-23 08:52:33.877578506 +0800
+++ mutter-40.0.new/src/core/prefs.c 2021-04-23 08:53:11.404056017 +0800
@@ -98,6 +98,7 @@
static gboolean focus_change_on_pointer_rest = FALSE;
static gboolean bell_is_visible = FALSE;
static gboolean bell_is_audible = TRUE;
+static gboolean bell_force_through_server = FALSE;
static gboolean gnome_accessibility = FALSE;
static gboolean gnome_animations = TRUE;
static gboolean locate_pointer_is_enabled = FALSE;
@@ -352,6 +353,13 @@
&bell_is_audible, /* FIXME: change the name: it's confusing */
},
{
+ { "audible-bell-force-through-server",
+ SCHEMA_MUTTER,
+ META_PREF_AUDIBLE_BELL_FORCE_THROUGH_SERVER,
+ },
+ &bell_force_through_server,
+ },
+ {
{ KEY_GNOME_ACCESSIBILITY,
SCHEMA_INTERFACE,
META_PREF_GNOME_ACCESSIBILITY,
@@ -1714,6 +1722,9 @@
case META_PREF_AUDIBLE_BELL:
return "AUDIBLE_BELL";
+ case META_PREF_AUDIBLE_BELL_FORCE_THROUGH_SERVER:
+ return "AUDIBLE_BELL_FORCE_THROUGH_SERVER";
+
case META_PREF_VISUAL_BELL_TYPE:
return "VISUAL_BELL_TYPE";
@@ -1992,6 +2003,12 @@
return bell_is_audible;
}
+gboolean
+meta_prefs_bell_force_through_server (void)
+{
+ return bell_force_through_server;
+}
+
GDesktopVisualBellType
meta_prefs_get_visual_bell_type (void)
{
diff --unified --recursive --text --new-file --color mutter-40.0.old/src/meta/prefs.h mutter-40.0.new/src/meta/prefs.h
--- mutter-40.0.old/src/meta/prefs.h 2021-04-23 08:52:33.877578506 +0800
+++ mutter-40.0.new/src/meta/prefs.h 2021-04-23 08:53:11.404056017 +0800
@@ -91,6 +91,7 @@
META_PREF_WORKSPACE_NAMES,
META_PREF_VISUAL_BELL,
META_PREF_AUDIBLE_BELL,
+ META_PREF_AUDIBLE_BELL_FORCE_THROUGH_SERVER,
META_PREF_VISUAL_BELL_TYPE,
META_PREF_GNOME_ACCESSIBILITY,
META_PREF_GNOME_ANIMATIONS,
@@ -480,6 +481,9 @@
gboolean meta_prefs_bell_is_audible (void);
META_EXPORT
+gboolean meta_prefs_bell_force_through_server (void);
+
+META_EXPORT
GDesktopVisualBellType meta_prefs_get_visual_bell_type (void);
META_EXPORT

View File

@@ -0,0 +1,88 @@
Index: mutter-48.0/src/backends/native/meta-default-modes-s390x.h
===================================================================
--- /dev/null
+++ mutter-48.0/src/backends/native/meta-default-modes-s390x.h
@@ -0,0 +1,57 @@
+/* Generated by gen-default-modes.py */
+
+static const drmModeModeInfo meta_default_landscape_drm_mode_infos[] = {
+{ 38250, 800, 832, 912, 1024, 0, 600, 603, 607, 624, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "800x600_60.00" },
+{ 63500, 1024, 1072, 1176, 1328, 0, 768, 771, 775, 798, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1024x768_60.00" },
+{ 81750, 1152, 1216, 1336, 1520, 0, 864, 867, 871, 897, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1152x864_60.00" },
+{ 101250, 1280, 1360, 1488, 1696, 0, 960, 963, 967, 996, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1280x960_60.00" },
+{ 121750, 1400, 1488, 1632, 1864, 0, 1050, 1053, 1057, 1089, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1400x1050_60.00" },
+{ 129000, 1440, 1528, 1680, 1920, 0, 1080, 1083, 1087, 1120, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1440x1080_60.00" },
+{ 161000, 1600, 1712, 1880, 2160, 0, 1200, 1203, 1207, 1245, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1600x1200_60.00" },
+{ 233500, 1920, 2064, 2264, 2608, 0, 1440, 1443, 1447, 1493, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1920x1440_60.00" },
+{ 267250, 2048, 2208, 2424, 2800, 0, 1536, 1539, 1543, 1592, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "2048x1536_60.00" },
+{ 83500, 1280, 1352, 1480, 1680, 0, 800, 803, 809, 831, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1280x800_60.00" },
+{ 106500, 1440, 1528, 1672, 1904, 0, 900, 903, 909, 934, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1440x900_60.00" },
+{ 146250, 1680, 1784, 1960, 2240, 0, 1050, 1053, 1059, 1089, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1680x1050_60.00" },
+{ 193250, 1920, 2056, 2256, 2592, 0, 1200, 1203, 1209, 1245, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1920x1200_60.00" },
+{ 348500, 2560, 2760, 3032, 3504, 0, 1600, 1603, 1609, 1658, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "2560x1600_60.00" },
+{ 74500, 1280, 1344, 1472, 1664, 0, 720, 723, 728, 748, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1280x720_60.00" },
+{ 85250, 1368, 1440, 1576, 1784, 0, 768, 771, 781, 798, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1368x768_60.00" },
+{ 118250, 1600, 1696, 1856, 2112, 0, 900, 903, 908, 934, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1600x900_60.00" },
+{ 173000, 1920, 2048, 2248, 2576, 0, 1080, 1083, 1088, 1120, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "1920x1080_60.00" },
+{ 197000, 2048, 2184, 2400, 2752, 0, 1152, 1155, 1160, 1195, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "2048x1152_60.00" },
+{ 312250, 2560, 2752, 3024, 3488, 0, 1440, 1443, 1448, 1493, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "2560x1440_60.00" },
+{ 396250, 2880, 3096, 3408, 3936, 0, 1620, 1623, 1628, 1679, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "2880x1620_60.00" },
+{ 492000, 3200, 3456, 3800, 4400, 0, 1800, 1803, 1808, 1865, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "3200x1800_60.00" },
+{ 712750, 3840, 4160, 4576, 5312, 0, 2160, 2163, 2168, 2237, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "3840x2160_60.00" },
+{ 813000, 4096, 4440, 4888, 5680, 0, 2304, 2307, 2312, 2386, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "4096x2304_60.00" },
+{ 1276500, 5120, 5560, 6128, 7136, 0, 2880, 2883, 2888, 2982, 0, 0, DRM_MODE_FLAG_NHSYNC | DRM_MODE_FLAG_PVSYNC, DRM_MODE_TYPE_DEFAULT, "5120x2880_60.00" },
+};
+
+static const drmModeModeInfo meta_default_portrait_drm_mode_infos[] = {
+{ 38250, 600, 603, 607, 624, 0, 800, 832, 912, 1024, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "600x800_60.00" },
+{ 63500, 768, 771, 775, 798, 0, 1024, 1072, 1176, 1328, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "768x1024_60.00" },
+{ 81750, 864, 867, 871, 897, 0, 1152, 1216, 1336, 1520, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "864x1152_60.00" },
+{ 101250, 960, 963, 967, 996, 0, 1280, 1360, 1488, 1696, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "960x1280_60.00" },
+{ 121750, 1050, 1053, 1057, 1089, 0, 1400, 1488, 1632, 1864, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "1050x1400_60.00" },
+{ 129000, 1080, 1083, 1087, 1120, 0, 1440, 1528, 1680, 1920, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "1080x1440_60.00" },
+{ 161000, 1200, 1203, 1207, 1245, 0, 1600, 1712, 1880, 2160, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "1200x1600_60.00" },
+{ 233500, 1440, 1443, 1447, 1493, 0, 1920, 2064, 2264, 2608, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "1440x1920_60.00" },
+{ 267250, 1536, 1539, 1543, 1592, 0, 2048, 2208, 2424, 2800, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "1536x2048_60.00" },
+{ 83500, 800, 803, 809, 831, 0, 1280, 1352, 1480, 1680, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "800x1280_60.00" },
+{ 106500, 900, 903, 909, 934, 0, 1440, 1528, 1672, 1904, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "900x1440_60.00" },
+{ 146250, 1050, 1053, 1059, 1089, 0, 1680, 1784, 1960, 2240, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "1050x1680_60.00" },
+{ 193250, 1200, 1203, 1209, 1245, 0, 1920, 2056, 2256, 2592, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "1200x1920_60.00" },
+{ 348500, 1600, 1603, 1609, 1658, 0, 2560, 2760, 3032, 3504, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "1600x2560_60.00" },
+{ 74500, 720, 723, 728, 748, 0, 1280, 1344, 1472, 1664, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "720x1280_60.00" },
+{ 85250, 768, 771, 781, 798, 0, 1368, 1440, 1576, 1784, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "768x1368_60.00" },
+{ 118250, 900, 903, 908, 934, 0, 1600, 1696, 1856, 2112, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "900x1600_60.00" },
+{ 173000, 1080, 1083, 1088, 1120, 0, 1920, 2048, 2248, 2576, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "1080x1920_60.00" },
+{ 197000, 1152, 1155, 1160, 1195, 0, 2048, 2184, 2400, 2752, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "1152x2048_60.00" },
+{ 312250, 1440, 1443, 1448, 1493, 0, 2560, 2752, 3024, 3488, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "1440x2560_60.00" },
+{ 396250, 1620, 1623, 1628, 1679, 0, 2880, 3096, 3408, 3936, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "1620x2880_60.00" },
+{ 492000, 1800, 1803, 1808, 1865, 0, 3200, 3456, 3800, 4400, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "1800x3200_60.00" },
+{ 712750, 2160, 2163, 2168, 2237, 0, 3840, 4160, 4576, 5312, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "2160x3840_60.00" },
+{ 813000, 2304, 2307, 2312, 2386, 0, 4096, 4440, 4888, 5680, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "2304x4096_60.00" },
+{ 1276500, 2880, 2883, 2888, 2982, 0, 5120, 5560, 6128, 7136, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "2880x5120_60.00" },
+};
Index: mutter-48.0/src/meson.build
===================================================================
--- mutter-48.0.orig/src/meson.build
+++ mutter-48.0/src/meson.build
@@ -1031,6 +1031,7 @@ if have_profiler
endif
if have_native_backend
+ if host_machine.cpu_family() != 's390x'
cvt = find_program('cvt')
gen_default_modes = find_program('backends/native/gen-default-modes.py')
@@ -1038,6 +1039,13 @@ if have_native_backend
output: 'meta-default-modes.h',
command: [gen_default_modes, '@OUTPUT@']
)
+ else
+ default_modes_h = custom_target('meta-default-modes',
+ input: 'backends/native/meta-default-modes-s390x.h',
+ output: 'meta-default-modes.h',
+ command: ['cp', '@INPUT@', '@OUTPUT@']
+ )
+ endif
mutter_built_sources += default_modes_h
endif

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,67 @@
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(+)
Index: mutter-48.0/src/compositor/meta-window-actor-x11.c
===================================================================
--- mutter-48.0.orig/src/compositor/meta-window-actor-x11.c
+++ mutter-48.0/src/compositor/meta-window-actor-x11.c
@@ -408,6 +408,14 @@ has_shadow (MetaWindowActorX11 *actor_x1
*/
if (!meta_window_actor_is_opaque (META_WINDOW_ACTOR (actor_x11)))
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;
/*
* If a window specifies that it has custom frame extents, that likely
Index: mutter-48.0/src/x11/window-x11-private.h
===================================================================
--- mutter-48.0.orig/src/x11/window-x11-private.h
+++ mutter-48.0/src/x11/window-x11-private.h
@@ -128,6 +128,8 @@ gboolean meta_window_x11_has_pointer (Me
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
Index: mutter-48.0/src/x11/window-x11.c
===================================================================
--- mutter-48.0.orig/src/x11/window-x11.c
+++ mutter-48.0/src/x11/window-x11.c
@@ -2718,6 +2718,15 @@ meta_window_x11_update_shape_region (Met
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

6591
mutter.changes Normal file

File diff suppressed because it is too large Load Diff

4
mutter.obsinfo Normal file
View File

@@ -0,0 +1,4 @@
name: mutter
version: 48.0+38
mtime: 1743171703
commit: 626d5642d13299403c4bd7c87147395ef435faf9

241
mutter.spec Normal file
View File

@@ -0,0 +1,241 @@
#
# spec file for package mutter
#
# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%bcond_with profiler
%define api_major 16
%define api_minor 0
%define libmutter libmutter-%{api_major}-%{api_minor}
Name: mutter
Version: 48.0+38
Release: 0
Summary: Window and compositing manager based on Clutter
License: GPL-2.0-or-later
Group: System/GUI/GNOME
URL: https://www.gnome.org
Source0: %{name}-%{version}.tar.zst
Source1: gvdb-0.gitmodule.tar.zst
# PATCH-FIX-UPSTREAM mutter-disable-cvt-s390x.patch bsc#1158128 fcrozat@suse.com -- Do not search for cvt on s390x, it doesn't exist there
Patch1: mutter-disable-cvt-s390x.patch
# PATCH-FIX-OPENSUSE mutter-window-actor-Special-case-shaped-Java-windows.patch -- window-actor: Special-case shaped Java windows
Patch2: mutter-window-actor-Special-case-shaped-Java-windows.patch
# PATCH-FIX-OPENSUSE 0001-Revert-clutter-actor-Cache-stage-relative-instead-of.patch glgo#GNOME/mutter#3302 bsc#1219546 alynx.zhou@suse.com -- Fix partial update on VT switch
Patch4: 0001-Revert-clutter-actor-Cache-stage-relative-instead-of.patch
#PATCH-FEATURE-OPENSUSE mutter-implement-text-input-v1.patch glgo#GNOME/mutter!3751 bsc#1219505 alynx.zhou@suse.com -- Allow input method to work in Wayland Chromium
Patch5: mutter-implement-text-input-v1.patch
## SLE-only patches start at 1000
# PATCH-FEATURE-SLE mutter-SLE-bell.patch FATE#316042 bnc#889218 idonmez@suse.com -- make audible bell work out of the box.
Patch1000: mutter-SLE-bell.patch
BuildRequires: Mesa-libGLESv3-devel
BuildRequires: fdupes
%ifnarch s390x
BuildRequires: (libxcvt if xorg-x11-server > 21)
%endif
BuildRequires: meson >= 1.3.0
BuildRequires: pkgconfig
BuildRequires: python3-argcomplete
BuildRequires: python3-docutils
BuildRequires: xorg-x11-server
BuildRequires: xvfb-run
BuildRequires: pkgconfig(bash-completion)
BuildRequires: pkgconfig(cairo) >= 1.10.0
BuildRequires: pkgconfig(colord) >= 1.4.5
BuildRequires: pkgconfig(egl)
BuildRequires: pkgconfig(fribidi) >= 1.0.0
BuildRequires: pkgconfig(gbm) >= 21.3
BuildRequires: pkgconfig(gio-unix-2.0) >= 2.69.0
BuildRequires: pkgconfig(glesv2)
BuildRequires: pkgconfig(glib-2.0) >= 2.81.1
BuildRequires: pkgconfig(gnome-desktop-4)
BuildRequires: pkgconfig(gnome-settings-daemon)
BuildRequires: pkgconfig(gobject-introspection-1.0) >= 0.9.5
BuildRequires: pkgconfig(graphene-gobject-1.0)
BuildRequires: pkgconfig(gsettings-desktop-schemas) >= 47.beta
BuildRequires: pkgconfig(gtk4)
BuildRequires: pkgconfig(gudev-1.0) >= 232
BuildRequires: pkgconfig(lcms2) >= 2.6
BuildRequires: pkgconfig(libcanberra-gtk3) >= 0.26
BuildRequires: pkgconfig(libdisplay-info)
BuildRequires: pkgconfig(libdrm) >= 2.4.118
BuildRequires: pkgconfig(libeis-1.0) >= 1.3.901
BuildRequires: pkgconfig(libinput) >= 1.26.0
BuildRequires: pkgconfig(libpipewire-0.3) >= 1.2.0
BuildRequires: pkgconfig(libstartup-notification-1.0) >= 0.7
BuildRequires: pkgconfig(libsystemd)
BuildRequires: pkgconfig(libudev) >= 228
BuildRequires: pkgconfig(libwacom) >= 0.13
BuildRequires: pkgconfig(pango) >= 1.46.0
BuildRequires: pkgconfig(pixman-1) >= 0.42
BuildRequires: pkgconfig(sm)
%if %{with profiler}
BuildRequires: pkgconfig(sysprof-6)
BuildRequires: pkgconfig(sysprof-capture-4) >= 3.37.2
%endif
BuildRequires: pkgconfig(udev)
BuildRequires: pkgconfig(upower-glib) >= 0.99.0
BuildRequires: pkgconfig(wayland-eglstream)
BuildRequires: pkgconfig(wayland-protocols) >= 1.36
BuildRequires: pkgconfig(wayland-server) >= 1.23
BuildRequires: pkgconfig(x11)
BuildRequires: pkgconfig(x11-xcb)
BuildRequires: pkgconfig(xau)
BuildRequires: pkgconfig(xcb-randr)
BuildRequires: pkgconfig(xcomposite) >= 0.4
BuildRequires: pkgconfig(xcursor)
BuildRequires: pkgconfig(xdamage)
BuildRequires: pkgconfig(xext)
BuildRequires: pkgconfig(xfixes) >= 3
BuildRequires: pkgconfig(xi) >= 1.7.4
BuildRequires: pkgconfig(xinerama)
BuildRequires: pkgconfig(xkbcommon) >= 0.4.3
BuildRequires: pkgconfig(xkbcommon-x11)
BuildRequires: pkgconfig(xkbfile)
BuildRequires: pkgconfig(xkeyboard-config)
BuildRequires: pkgconfig(xrandr) >= 1.5.0
BuildRequires: pkgconfig(xrender)
BuildRequires: pkgconfig(xtst)
BuildRequires: pkgconfig(xwayland)
Requires: gnome-settings-daemon
Provides: windowmanager
# Obsolete the now private typelib.
Obsoletes: typelib-1_0-Meta-3_0
# libmutter-<n>-0 and mutter-data were folded into the main package after GNOME 40
# The library is not realy usable decoupled from the mutter version, and offering to
# parallel install it only gives a false sense of capability. A full GNOME Stack
# has a matching gnome-shell, mutter, libmutter version.
Obsoletes: libmutter-8-0 <= %{version}
# mutter-data was essentilly hard-required at the same version, as mutter requires
# libmutter-<n>-0 (which has a soname bump at every major version change), libmutter
# required mutter-data >= %%{version} and mutter-data required mutter=%%{version}.
Obsoletes: mutter-data <= %{version}
%description
Mutter is a window and compositing manager based on Clutter, forked
from Metacity.
%package devel
Summary: Development files for mutter, a window and compositing manager
Group: Development/Libraries/GNOME
Requires: %{name} = %{version}
%description devel
This subpackage contains libraries and header files for developing
applications that want to make use of the mutter library.
%lang_package
%prep
%autosetup -N
pushd subprojects
tar xf %{SOURCE1}
mv gvdb-0.gitmodule gvdb
popd
%if 0%{?is_opensuse}
%autopatch -p1 -M 999
%else
# SLE-only patches (apply all patches).
%autopatch -p1
%endif
%build
%meson \
-Degl_device=true \
-Dwayland_eglstream=true \
-Dcogl_tests=false \
-Dclutter_tests=false \
-Dtests=disabled \
-Dinstalled_tests=false \
-Dxwayland_initfd=auto \
%if %{with profiler}
-Dprofiler=true \
%else
-Dprofiler=false \
%endif
%{nil}
%meson_build
%install
%meson_install
%find_lang %{name} %{?no_lang_C}
%fdupes %{buildroot}%{_prefix}
%ldconfig_scriptlets
%files
%license COPYING
%doc NEWS
%{_mandir}/man1/mutter.1%{?ext_man}
%{_bindir}/mutter
%{_libexecdir}/mutter-restart-helper
%{_libexecdir}/mutter-x11-frames
%{_udevrulesdir}/61-mutter.rules
# These so files are not split out since they are private to mutter
%{_libdir}/mutter-%{api_major}/libmutter-clutter-%{api_major}.so.*
%{_libdir}/mutter-%{api_major}/libmutter-cogl-%{api_major}.so.*
%{_libdir}/mutter-%{api_major}/libmutter-mtk-%{api_major}.so.*
%{_libdir}/mutter-%{api_major}/plugins/libdefault.so
# These typelibs are not split out since they are private to mutter
%{_libdir}/mutter-%{api_major}/Clutter-%{api_major}.typelib
%{_libdir}/mutter-%{api_major}/Cogl-%{api_major}.typelib
%{_libdir}/mutter-%{api_major}/Meta-%{api_major}.typelib
%{_libdir}/mutter-%{api_major}/Mtk-%{api_major}.typelib
%{_libdir}/libmutter-%{api_major}.so.*
%dir %{_libdir}/mutter-%{api_major}/
# users of libmutter need this directory
%dir %{_libdir}/mutter-%{api_major}/plugins/
# Do not depend on g-c-c just for a directory
%dir %{_datadir}/gnome-control-center
%dir %{_datadir}/gnome-control-center/keybindings
%{_datadir}/gnome-control-center/keybindings/50-mutter-windows.xml
%{_datadir}/gnome-control-center/keybindings/50-mutter-navigation.xml
%{_datadir}/gnome-control-center/keybindings/50-mutter-system.xml
%{_datadir}/gnome-control-center/keybindings/50-mutter-wayland.xml
%{_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
%{_bindir}/gdctl
%{_datadir}/bash-completion/completions/gdctl
%{_mandir}/man1/gdctl.1%{ext_man}
%files devel
%{_includedir}/mutter-%{api_major}/
%{_libdir}/mutter-%{api_major}/Meta-%{api_major}.gir
%{_libdir}/mutter-%{api_major}/Clutter-%{api_major}.gir
%{_libdir}/mutter-%{api_major}/Cogl-%{api_major}.gir
%{_libdir}/mutter-%{api_major}/Mtk-%{api_major}.gir
%{_libdir}/mutter-%{api_major}/libmutter-clutter-%{api_major}.so
%{_libdir}/mutter-%{api_major}/libmutter-cogl-%{api_major}.so
%{_libdir}/mutter-%{api_major}/libmutter-mtk-%{api_major}.so
%{_libdir}/libmutter-%{api_major}.so
%{_libdir}/pkgconfig/libmutter-%{api_major}.pc
%{_libdir}/pkgconfig/mutter-clutter-%{api_major}.pc
%{_libdir}/pkgconfig/mutter-cogl-%{api_major}.pc
%{_libdir}/pkgconfig/mutter-mtk-%{api_major}.pc
%files lang -f %{name}.lang
%changelog