Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package mutter for openSUSE:Factory checked in at 2025-03-21 20:21:45 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/mutter (Old) and /work/SRC/openSUSE:Factory/.mutter.new.2696 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "mutter" Fri Mar 21 20:21:45 2025 rev:247 rq:1254940 version:48.0+5 Changes: -------- --- /work/SRC/openSUSE:Factory/mutter/mutter.changes 2025-03-18 17:41:07.793109984 +0100 +++ /work/SRC/openSUSE:Factory/.mutter.new.2696/mutter.changes 2025-03-21 20:22:05.625939959 +0100 @@ -1,0 +2,19 @@ +Fri Mar 21 08:05:33 UTC 2025 - Dead Mozay <dead_mo...@opensuse.org> + +- Add 0001-cursor-Unify-prepare_func-for-shape-cursors.patch. + Solves the problem of changing the size of the cursor in gtk + applications on HiDPI displays. + +------------------------------------------------------------------- +Thu Mar 20 15:43:17 UTC 2025 - bjorn....@gmail.com + +- Update to version 48.0+5: + * Revert "ci: Disable container building temporarily" + * Revert "ci: Disable sysext temporarily" + * tests: Raise the timeout on monitor-unit from 1 minute to 5 + minutes + * Revert "onscreen/native: Account for all posted frames" + * kms/impl-device: Always catch pending KMS update in + _schedule_process + +------------------------------------------------------------------- Old: ---- mutter-48.0.obscpio New: ---- 0001-cursor-Unify-prepare_func-for-shape-cursors.patch _servicedata mutter-48.0+5.obscpio BETA DEBUG BEGIN: New: - Add 0001-cursor-Unify-prepare_func-for-shape-cursors.patch. Solves the problem of changing the size of the cursor in gtk BETA DEBUG END: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ mutter.spec ++++++ --- /var/tmp/diff_new_pack.ODFlns/_old 2025-03-21 20:22:06.533977736 +0100 +++ /var/tmp/diff_new_pack.ODFlns/_new 2025-03-21 20:22:06.533977736 +0100 @@ -23,7 +23,7 @@ %define libmutter libmutter-%{api_major}-%{api_minor} Name: mutter -Version: 48.0 +Version: 48.0+5 Release: 0 Summary: Window and compositing manager based on Clutter License: GPL-2.0-or-later @@ -40,6 +40,8 @@ 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.z...@suse.com -- Allow input method to work in Wayland Chromium Patch5: mutter-implement-text-input-v1.patch +# PATCH-FIX-UPSTREAM 0001-cursor-Unify-prepare_func-for-shape-cursors.patch https://gitlab.gnome.org/GNOME/mutter/-/issues/3975 -- Solves the problem of changing the size of the cursor in gtk applications on HiDPI displays. +Patch6: 0001-cursor-Unify-prepare_func-for-shape-cursors.patch ## SLE-only patches start at 1000 # PATCH-FEATURE-SLE mutter-SLE-bell.patch FATE#316042 bnc#889218 idon...@suse.com -- make audible bell work out of the box. ++++++ 0001-cursor-Unify-prepare_func-for-shape-cursors.patch ++++++ >From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: "Jan Alexander Steffens (heftig)" <hef...@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); ++++++ _service ++++++ --- /var/tmp/diff_new_pack.ODFlns/_old 2025-03-21 20:22:06.577979566 +0100 +++ /var/tmp/diff_new_pack.ODFlns/_new 2025-03-21 20:22:06.581979733 +0100 @@ -3,11 +3,11 @@ <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">48.0</param> + <param name="revision">9a1fa7e13b5feefb76902287ae7ca2554d18cf15</param> <param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param> <param name="versionrewrite-pattern">(.*)\+0</param> <param name="versionrewrite-replacement">\1</param> - <param name="changesgenerate">disable</param> + <param name="changesgenerate">enable</param> </service> <service name="obs_scm" mode="manual"> <param name="scm">git</param> ++++++ _servicedata ++++++ <servicedata> <service name="tar_scm"> <param name="url">https://gitlab.gnome.org/GNOME/mutter.git</param> <param name="changesrevision">9a1fa7e13b5feefb76902287ae7ca2554d18cf15</param></service></servicedata> (No newline at EOF) ++++++ mutter-48.0.obscpio -> mutter-48.0+5.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-48.0/.gitlab-ci.yml new/mutter-48.0+5/.gitlab-ci.yml --- old/mutter-48.0/.gitlab-ci.yml 2025-03-16 14:38:48.000000000 +0100 +++ new/mutter-48.0+5/.gitlab-ci.yml 2025-03-19 14:01:12.000000000 +0100 @@ -21,7 +21,6 @@ # https://gitlab.gnome.org/Infrastructure/Infrastructure/-/issues/1665 tags: - x86_64_v3 - when: manual stages: - review @@ -327,14 +326,9 @@ rules: - !reference [.only-merge-requests, rules] -.dummy-container-build: - script: - - echo Dummy container build - build-fedora-container@x86_64: extends: - #- .fdo.container-build@fedora@x86_64 - - .dummy-container-build + - .fdo.container-build@fedora@x86_64 - .mutter.fedora@x86_64 - .mutter.skip-git-clone stage: prepare @@ -343,8 +337,7 @@ build-fedora-container@aarch64: extends: - #- .fdo.container-build@fedora@aarch64 - - .dummy-container-build + - .fdo.container-build@fedora@aarch64 - .mutter.fedora@aarch64 - .mutter.skip-git-clone stage: prepare diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-48.0/src/backends/native/meta-kms-impl-device.c new/mutter-48.0+5/src/backends/native/meta-kms-impl-device.c --- old/mutter-48.0/src/backends/native/meta-kms-impl-device.c 2025-03-16 14:38:48.000000000 +0100 +++ new/mutter-48.0+5/src/backends/native/meta-kms-impl-device.c 2025-03-19 14:01:12.000000000 +0100 @@ -2081,17 +2081,8 @@ if (ensure_deadline_timer_armed (impl_device, crtc_frame)) return; - - if (crtc_frame->pending_update) - { - meta_kms_impl_device_do_process_update (impl_device, crtc_frame, - crtc_frame->crtc, - crtc_frame->pending_update, - META_KMS_UPDATE_FLAG_NONE); - } } - - if (crtc_frame->pending_update) + else if (crtc_frame->pending_update) { MetaKmsImplDevicePrivate *priv = meta_kms_impl_device_get_instance_private (impl_device); @@ -2100,6 +2091,14 @@ crtc_frame->pending_update, priv->deadline_timer_state); } + if (crtc_frame->pending_update) + { + meta_kms_impl_device_do_process_update (impl_device, crtc_frame, + crtc_frame->crtc, + crtc_frame->pending_update, + META_KMS_UPDATE_FLAG_NONE); + } + meta_kms_device_set_needs_flush (meta_kms_crtc_get_device (crtc), crtc); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-48.0/src/backends/native/meta-onscreen-native.c new/mutter-48.0+5/src/backends/native/meta-onscreen-native.c --- old/mutter-48.0/src/backends/native/meta-onscreen-native.c 2025-03-16 14:38:48.000000000 +0100 +++ new/mutter-48.0+5/src/backends/native/meta-onscreen-native.c 2025-03-19 14:01:12.000000000 +0100 @@ -1672,7 +1672,6 @@ { kms_update = meta_frame_native_steal_kms_update (frame_native); post_nonprimary_plane_update (onscreen_native, frame, kms_update); - onscreen_native->posted_frame = clutter_frame_ref (frame); return; } @@ -2127,7 +2126,6 @@ } post_nonprimary_plane_update (onscreen_native, frame, kms_update); - onscreen_native->posted_frame = clutter_frame_ref (frame); clutter_frame_set_result (frame, CLUTTER_FRAME_RESULT_PENDING_PRESENTED); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/mutter-48.0/src/tests/meson.build new/mutter-48.0+5/src/tests/meson.build --- old/mutter-48.0/src/tests/meson.build 2025-03-16 14:38:48.000000000 +0100 +++ new/mutter-48.0+5/src/tests/meson.build 2025-03-19 14:01:12.000000000 +0100 @@ -265,6 +265,7 @@ { 'name': 'monitor-unit', 'suite': 'backend', + 'timeout': 300, 'sources': [ 'monitor-unit-tests.c', ], 'depends': [ test_client, @@ -879,7 +880,7 @@ env: test_env, depends: test_depends, is_parallel: false, - timeout: 60, + timeout: test_case.get('timeout', 60), ) endforeach ++++++ mutter.obsinfo ++++++ --- /var/tmp/diff_new_pack.ODFlns/_old 2025-03-21 20:22:08.118043637 +0100 +++ /var/tmp/diff_new_pack.ODFlns/_new 2025-03-21 20:22:08.122043803 +0100 @@ -1,5 +1,5 @@ name: mutter -version: 48.0 -mtime: 1742132328 -commit: 3af3738795f6e3a37b77c3e0b64b1e671709a3aa +version: 48.0+5 +mtime: 1742389272 +commit: 9a1fa7e13b5feefb76902287ae7ca2554d18cf15