diff --git a/_service b/_service index 6f25d82..4e2d5b1 100644 --- a/_service +++ b/_service @@ -3,7 +3,7 @@ git https://gitlab.gnome.org/GNOME/mutter.git - refs/tags/45.3 + 46.0 @PARENT_TAG@+@TAG_OFFSET@ (.*)\+0 \1 diff --git a/mutter-45.3.obscpio b/mutter-45.3.obscpio deleted file mode 100644 index 9f463dd..0000000 --- a/mutter-45.3.obscpio +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9a83a17f6b454d3247772ed43d5999efe9726d1b09fbc8cceebd8208f599efdc -size 26478093 diff --git a/mutter-46.0.obscpio b/mutter-46.0.obscpio new file mode 100644 index 0000000..eb1cb19 --- /dev/null +++ b/mutter-46.0.obscpio @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e3b763da74e5643c455ccc0e7b47a40bca4b6a4b5d6740785feeb4d1bae4752 +size 30319629 diff --git a/mutter-fix-text-input-delete-surrounding.patch b/mutter-fix-text-input-delete-surrounding.patch deleted file mode 100644 index 6ab05d4..0000000 --- a/mutter-fix-text-input-delete-surrounding.patch +++ /dev/null @@ -1,207 +0,0 @@ -From 27bdf0c577a551254551fdaaf7870c5072707c69 Mon Sep 17 00:00:00 2001 -From: Alynx Zhou -Date: Fri, 25 Nov 2022 15:48:01 +0800 -Subject: [PATCH 1/2] wayland/text-input: Use byte based offset in - delete_surrounding_text - -ClutterInputFocus/GtkIMContext uses char based offset for -delete_surrounding, however, text_input_v3 uses byte based offset for -it. Currently only GTK with mutter can work correctly via text_input_v3 -because they both forget to convert between char based offset and byte -based offset. - -This commit fixes it in mutter by saving committed surrounding text in -MetaWaylandTextInput and converting char based offset to byte based -offset with the UTF-8 encoded surrounding text. - -Fixes . - -Part-of: ---- - src/wayland/meta-wayland-text-input.c | 55 +++++++++++++++++++++++---- - 1 file changed, 47 insertions(+), 8 deletions(-) - -diff --git a/src/wayland/meta-wayland-text-input.c b/src/wayland/meta-wayland-text-input.c -index b1ceb1a6bb5..2e694dc1eb8 100644 ---- a/src/wayland/meta-wayland-text-input.c -+++ b/src/wayland/meta-wayland-text-input.c -@@ -58,6 +58,20 @@ struct _MetaWaylandTextInput - - GHashTable *resource_serials; - -+ /* This saves the uncommitted middle state of surrounding text from client -+ * between `set_surrounding_text` and `commit`, will be cleared after -+ * committed. -+ */ -+ struct -+ { -+ char *text; -+ uint32_t cursor; -+ uint32_t anchor; -+ } pending_surrounding; -+ -+ /* This is the actual committed surrounding text after `commit`, we need this -+ * to convert between char based offset and byte based offset. -+ */ - struct - { - char *text; -@@ -216,14 +230,32 @@ meta_wayland_text_input_focus_delete_surrounding (ClutterInputFocus *focus, - guint len) - { - MetaWaylandTextInput *text_input; -+ const char *start, *end; -+ const char *before, *after; -+ const char *cursor; - uint32_t before_length; - uint32_t after_length; - struct wl_resource *resource; - -+ /* offset and len are counted by UTF-8 chars, but text_input_v3's lengths are -+ * counted by bytes, so we convert UTF-8 char offsets to pointers here, this -+ * needs the surrounding text -+ */ - text_input = META_WAYLAND_TEXT_INPUT_FOCUS (focus)->text_input; -- before_length = ABS (MIN (offset, 0)); -- after_length = MAX (0, offset + len); -- g_warn_if_fail (ABS (offset) <= len); -+ offset = MIN (offset, 0); -+ -+ start = text_input->surrounding.text; -+ end = start + strlen (text_input->surrounding.text); -+ cursor = start + text_input->surrounding.cursor; -+ -+ before = g_utf8_offset_to_pointer (cursor, offset); -+ g_assert (before >= start); -+ -+ after = g_utf8_offset_to_pointer (cursor, offset + len); -+ g_assert (after <= end); -+ -+ before_length = cursor - before; -+ after_length = after - cursor; - - wl_resource_for_each (resource, &text_input->focus_resource_list) - { -@@ -468,10 +500,10 @@ text_input_set_surrounding_text (struct wl_client *client, - if (!client_matches_focus (text_input, client)) - return; - -- g_free (text_input->surrounding.text); -- text_input->surrounding.text = g_strdup (text); -- text_input->surrounding.cursor = cursor; -- text_input->surrounding.anchor = anchor; -+ g_free (text_input->pending_surrounding.text); -+ text_input->pending_surrounding.text = g_strdup (text); -+ text_input->pending_surrounding.cursor = cursor; -+ text_input->pending_surrounding.anchor = anchor; - text_input->pending_state |= META_WAYLAND_PENDING_STATE_SURROUNDING_TEXT; - } - -@@ -591,7 +623,7 @@ text_input_set_cursor_rectangle (struct wl_client *client, - static void - meta_wayland_text_input_reset (MetaWaylandTextInput *text_input) - { -- g_clear_pointer (&text_input->surrounding.text, g_free); -+ g_clear_pointer (&text_input->pending_surrounding.text, g_free); - text_input->content_type_hint = ZWP_TEXT_INPUT_V3_CONTENT_HINT_NONE; - text_input->content_type_purpose = ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_NORMAL; - text_input->text_change_cause = ZWP_TEXT_INPUT_V3_CHANGE_CAUSE_INPUT_METHOD; -@@ -651,6 +683,12 @@ text_input_commit_state (struct wl_client *client, - - if (text_input->pending_state & META_WAYLAND_PENDING_STATE_SURROUNDING_TEXT) - { -+ /* Save the surrounding text for `delete_surrounding_text`. */ -+ g_free (text_input->surrounding.text); -+ text_input->surrounding.text = g_steal_pointer (&text_input->pending_surrounding.text); -+ text_input->surrounding.cursor = text_input->pending_surrounding.cursor; -+ text_input->surrounding.anchor = text_input->pending_surrounding.anchor; -+ /* Pass the surrounding text to Clutter to handle it with input method. */ - clutter_input_focus_set_surrounding (text_input->input_focus, - text_input->surrounding.text, - text_input->surrounding.cursor, -@@ -720,6 +758,7 @@ meta_wayland_text_input_destroy (MetaWaylandTextInput *text_input) - g_object_unref (text_input->input_focus); - g_hash_table_destroy (text_input->resource_serials); - g_clear_pointer (&text_input->preedit.string, g_free); -+ g_clear_pointer (&text_input->pending_surrounding.text, g_free); - g_clear_pointer (&text_input->surrounding.text, g_free); - g_free (text_input); - } --- -GitLab - - -From 33088d59db742cf802977a9d8ec8b4ea3ca79ea0 Mon Sep 17 00:00:00 2001 -From: Alynx Zhou -Date: Mon, 23 Oct 2023 14:32:21 +0800 -Subject: [PATCH 2/2] wayland/text-input: Pass char based offset to - ClutterInputFocus - -Wayland's text-input-v3 uses byte based offset for cursor and anchor of -surrounding text, but Clutter needs char based offset here. This commit -converts byte based offset to char based offset before passing them to -ClutterInputFocus. - -Fixes . - -Part-of: ---- - src/wayland/meta-wayland-text-input.c | 24 +++++++++++++++++++----- - 1 file changed, 19 insertions(+), 5 deletions(-) - -diff --git a/src/wayland/meta-wayland-text-input.c b/src/wayland/meta-wayland-text-input.c -index 2e694dc1eb8..c8f50847a88 100644 ---- a/src/wayland/meta-wayland-text-input.c -+++ b/src/wayland/meta-wayland-text-input.c -@@ -122,12 +122,18 @@ static void - meta_wayland_text_input_focus_request_surrounding (ClutterInputFocus *focus) - { - MetaWaylandTextInput *text_input; -+ long cursor, anchor; - -+ /* Clutter uses char offsets but text-input-v3 uses byte offsets. */ - text_input = META_WAYLAND_TEXT_INPUT_FOCUS (focus)->text_input; -+ cursor = g_utf8_strlen (text_input->surrounding.text, -+ text_input->surrounding.cursor); -+ anchor = g_utf8_strlen (text_input->surrounding.text, -+ text_input->surrounding.anchor); - clutter_input_focus_set_surrounding (focus, -- text_input->surrounding.text, -- text_input->surrounding.cursor, -- text_input->surrounding.anchor); -+ text_input->surrounding.text, -+ cursor, -+ anchor); - } - - static uint32_t -@@ -683,16 +689,24 @@ text_input_commit_state (struct wl_client *client, - - if (text_input->pending_state & META_WAYLAND_PENDING_STATE_SURROUNDING_TEXT) - { -+ long cursor, anchor; -+ - /* Save the surrounding text for `delete_surrounding_text`. */ - g_free (text_input->surrounding.text); - text_input->surrounding.text = g_steal_pointer (&text_input->pending_surrounding.text); - text_input->surrounding.cursor = text_input->pending_surrounding.cursor; - text_input->surrounding.anchor = text_input->pending_surrounding.anchor; -+ - /* Pass the surrounding text to Clutter to handle it with input method. */ -+ /* Clutter uses char offsets but text-input-v3 uses byte offsets. */ -+ cursor = g_utf8_strlen (text_input->surrounding.text, -+ text_input->surrounding.cursor); -+ anchor = g_utf8_strlen (text_input->surrounding.text, -+ text_input->surrounding.anchor); - clutter_input_focus_set_surrounding (text_input->input_focus, - text_input->surrounding.text, -- text_input->surrounding.cursor, -- text_input->surrounding.anchor); -+ cursor, -+ anchor); - } - - if (text_input->pending_state & META_WAYLAND_PENDING_STATE_INPUT_RECT) --- -GitLab - diff --git a/mutter-window-actor-Special-case-shaped-Java-windows.patch b/mutter-window-actor-Special-case-shaped-Java-windows.patch index 0642236..97f2872 100644 --- a/mutter-window-actor-Special-case-shaped-Java-windows.patch +++ b/mutter-window-actor-Special-case-shaped-Java-windows.patch @@ -1,4 +1,4 @@ -From 9efcc35102b4c41265e93461b35a1193b3d5822d Mon Sep 17 00:00:00 2001 +From b3b5aa01c63aee1df079e0394b0e6372df1838d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Fri, 12 May 2017 13:40:31 +0200 Subject: [PATCH] window-actor: Special-case shaped Java windows @@ -9,13 +9,15 @@ 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 ++++++++ - 1 file changed, 8 insertions(+) + src/x11/window-x11-private.h | 2 ++ + src/x11/window-x11.c | 9 +++++++++ + 3 files changed, 19 insertions(+) -Index: mutter-44.beta/src/compositor/meta-window-actor-x11.c -=================================================================== ---- mutter-44.beta.orig/src/compositor/meta-window-actor-x11.c -+++ mutter-44.beta/src/compositor/meta-window-actor-x11.c -@@ -428,6 +428,14 @@ has_shadow (MetaWindowActorX11 *actor_x1 +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; @@ -25,8 +27,45 @@ Index: mutter-44.beta/src/compositor/meta-window-actor-x11.c + * shadows; make its compliance tests happy to give it what it wants ... + */ + if (g_strcmp0 (window->res_name, "sun-awt-X11-XWindowPeer") == 0 && -+ window->shape_region != NULL) ++ 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 + + diff --git a/mutter.changes b/mutter.changes index abb9157..5a997ae 100644 --- a/mutter.changes +++ b/mutter.changes @@ -1,3 +1,125 @@ +------------------------------------------------------------------- +Tue Mar 19 09:30:13 UTC 2024 - Dominique Leuenberger + +- Update to version 46.0: + + Fix duplicate scroll events over libei. + + Fix window menu with mouse button modifier. + + Fix caret offset in accessible event. + + Fix handling of scroll events for mice. + + Use timerfd for clock timing. + + Advertise support for BGRA for all screencast types. + + Add support for preferred_buffer_scale/transform. + + Use memfd to store selection data. + + Fix globally active input focus. + + Call malloc_trim() after loading background image. + + Fix dynamic max render time sometimes getting stuck on constant + framerate. + + Introduce base of new gesture framework. + + Work around windows missing work area changes. + + Fix black screen with some drivers. + + Improve login screen <-> session transition. + + Fixed crashes. + + Misc. bug fixes and cleanups. + + Updated translations. + +------------------------------------------------------------------- +Mon Mar 18 08:01:44 UTC 2024 - Dominique Leuenberger + +- Update to version 46.rc: + + screencast: Renegotiate when DMABUF allocation fails. + + Unify wayland pointer- and keyboard grab mechanisms. + + Add modifier-aware screencasting support. + + Fix synchronization issue on Xorg. + + Send fractional_scale event immediately on window creation. + + wayland/client: Add make_dock() method. + + Fix gray area on top of some X11 fullscreen windows. + + Stick dragged windows to the right anchor point. + + cally/text: Fix emission of `text_caret_moved` signal. + + clutter/text: Fix minimum height calculation. + + Add experimental support for variable refresh rate. + + Expose the minimum refresh rate of monitors through D-Bus. + + Use "default" cursor for moving windows. + + Fixed crashes. + + Misc. bug fixes and cleanups. + + Updated translations. +- Rebase mutter-window-actor-Special-case-shaped-Java-windows.patch + (resync with Fedora). + +------------------------------------------------------------------- +Sun Mar 17 08:00:50 UTC 2024 - Dominique Leuenberger + +- Update to version 46.beta: + + Implement mouse cursor hotspots for KMS atomic. + + Improve project and development documentation. + + Refactor wayland focus management. + + Remove experimental rt-scheduler feature. + + Remove ClutterCanvas. + + Consider reduced blanking with lower pixelclock. + + Fix centering non-modal transients over parent. + + Allow XKB model to be configured. + + Enable KMS deadline timer after a VT switch if it was + inhibited. + + Prepare for variable refresh rate support. + + Restore IM state flushing before handling key events. + + Swap stylus buttons to match traditional order. + + Fix handling of pad ring wrap arounds. + + Support Broadcast RGB/RGB range KMS property. + + Ensure all planes support EGL config format. + + Handle Alt modifier in pad actions. + + Store eraser and stylus tools separately. + + Disambiguate output mapped to tablet with connector name. + + Fix lost keyboard focus after dismissing popups. + + Implement direct scanout for cropped and scaled surfaces. + + Fixed crashes. + + Misc. bug fixes and cleanups. + +------------------------------------------------------------------- +Sat Mar 16 11:42:08 UTC 2024 - Dominique Leuenberger + +- Update to version 46.alpha: + + wayland: Send keyboard modifiers after the enter event. + + wayland/client: Add make_desktop() method. + + Add a target workspace to raise_and_make_recent(). + + clutter: Drop cairo helpers. + + cogl: Port away from CoglObject. + + mtk: Add a Region type. + + Propagate focus appearance to all ancestors. + + Ignore locked modifiers in keybinding machinery. + + Fix disabling check-alive timeout. + + Drop ClutterContainer interface. + + Improve sloppy and mouse focus modes. + + Sync geometry only when window is mapped. + + Improve repick due to transform changes. + + Fix tablets on X11 having the wrong device. + + Disable HW cursor when inhibited by backend. + + screencast: Bring back blitting. + + backends/native: Try 10 bpc formats. + + Fix forcing EGLStream with NVIDIA proprietary driver. + + screencast: Add ability to stop streams. + + Use standard cursor names from CSS specification. + + Avoids over-synchronization due to client reads. + + Add more profiling instrumentation. + + Allow specifyig the layout manager for an actor type. + + Fix handling of relative mode for tablets. + + Dynamically assign hardware planes during configuration. + + Simplify X11 focus management. + + background: Fix background color around image. + + text-input: Use correct offsets in delete_surrounding_text. + + Add wayland shm YCbCr support. + + Set a minimum guessed scale. + + Fix building without native backend. + + Fix occasional artifacts at top of X11 fullscreen windows. + + Add documentation for building, running and debugging. + + Improve tablet pressure curve calculation. + + Fixed crashes. + + Plugged leaks. + + Updated translations. +- Bump api_major to 14 following upstream changes. +- Add pkgconfig(pixman-1) BuildRequires: new dependency. +- Drop pkgconfig(json-glib-1.0) BuildRequires: no longer needed. +- Drop mutter-fix-text-input-delete-surrounding.patch: fixed + upstream. + ------------------------------------------------------------------- Fri Mar 15 07:09:11 UTC 2024 - Alynx Zhou diff --git a/mutter.obsinfo b/mutter.obsinfo index 046fa59..c805129 100644 --- a/mutter.obsinfo +++ b/mutter.obsinfo @@ -1,4 +1,4 @@ name: mutter -version: 45.3 -mtime: 1704584095 -commit: 5012d22cb96ba22c4133e2e488ea1f5241fb50e2 +version: 46.0 +mtime: 1710596587 +commit: c4753689e3413cd9332d885dd0297b3b7d9ba9ca diff --git a/mutter.spec b/mutter.spec index ea43ca6..2b3516d 100644 --- a/mutter.spec +++ b/mutter.spec @@ -18,11 +18,11 @@ %bcond_with profiler -%define api_major 13 +%define api_major 14 %define api_minor 0 %define libmutter libmutter-%{api_major}-%{api_minor} Name: mutter -Version: 45.3 +Version: 46.0 Release: 0 Summary: Window and compositing manager based on Clutter License: GPL-2.0-or-later @@ -36,10 +36,8 @@ Patch1: mutter-disable-cvt-s390x.patch Patch2: mutter-window-actor-Special-case-shaped-Java-windows.patch # PATCH-FIX-UPSTREAM mutter-fix-x11-restart.patch glgo#GNOME/gnome-shell#7050 glgo#GNOME/mutter!3329 alynx.zhou@suse.com -- Fix crash on restarting mutter under x11 Patch3: mutter-fix-x11-restart.patch -# PATCH-FIX-UPSTREAM mutter-fix-text-input-delete-surrounding.patch glgo#GNOME/mutter#2146 glgo#GNOME/mutter!2712 alynx.zhou@suse.com -- Fix delete_surrounding_text of text-input-v3 -Patch4: mutter-fix-text-input-delete-surrounding.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 -Patch5: 0001-Revert-clutter-actor-Cache-stage-relative-instead-of.patch +Patch4: 0001-Revert-clutter-actor-Cache-stage-relative-instead-of.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. @@ -71,11 +69,10 @@ BuildRequires: pkgconfig(graphene-gobject-1.0) BuildRequires: pkgconfig(gsettings-desktop-schemas) >= 3.37.2 BuildRequires: pkgconfig(gtk4) BuildRequires: pkgconfig(gudev-1.0) >= 232 -BuildRequires: pkgconfig(json-glib-1.0) >= 0.12.0 BuildRequires: pkgconfig(lcms2) >= 2.6 BuildRequires: pkgconfig(libcanberra-gtk3) >= 0.26 BuildRequires: pkgconfig(libdisplay-info) -BuildRequires: pkgconfig(libdrm) >= 2.4.83 +BuildRequires: pkgconfig(libdrm) >= 2.4.118 BuildRequires: pkgconfig(libeis-1.0) BuildRequires: pkgconfig(libinput) >= 1.15.0 BuildRequires: pkgconfig(libpipewire-0.3) >= 0.3.21 @@ -84,6 +81,7 @@ BuildRequires: pkgconfig(libsystemd) BuildRequires: pkgconfig(libudev) >= 136 BuildRequires: pkgconfig(libwacom) >= 0.13 BuildRequires: pkgconfig(pango) >= 1.2.0 +BuildRequires: pkgconfig(pixman-1) >= 0.42 BuildRequires: pkgconfig(sm) %if %{with profiler} BuildRequires: pkgconfig(sysprof-6) @@ -92,8 +90,8 @@ BuildRequires: pkgconfig(sysprof-capture-4) >= 3.37.2 BuildRequires: pkgconfig(udev) BuildRequires: pkgconfig(upower-glib) >= 0.99.0 BuildRequires: pkgconfig(wayland-eglstream) -BuildRequires: pkgconfig(wayland-protocols) >= 1.21 -BuildRequires: pkgconfig(wayland-server) >= 1.13.0 +BuildRequires: pkgconfig(wayland-protocols) >= 1.33 +BuildRequires: pkgconfig(wayland-server) >= 1.22 BuildRequires: pkgconfig(x11) BuildRequires: pkgconfig(x11-xcb) BuildRequires: pkgconfig(xau) @@ -151,7 +149,6 @@ applications that want to make use of the mutter library. %patch -P 2 -p1 %patch -P 3 -p1 %patch -P 4 -p1 -%patch -P 5 -p1 %endif # SLE-only patches and translations. %if 0%{?sle_version}