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-06-10 08:56:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mutter (Old)
 and      /work/SRC/openSUSE:Factory/.mutter.new.19631 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "mutter"

Tue Jun 10 08:56:57 2025 rev:251 rq:1282867 version:48.3.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/mutter/mutter.changes    2025-05-27 
18:52:37.398904806 +0200
+++ /work/SRC/openSUSE:Factory/.mutter.new.19631/mutter.changes 2025-06-10 
08:57:19.987690392 +0200
@@ -1,0 +2,7 @@
+Tue Jun  3 07:44:09 UTC 2025 - Bjørn Lie <bjorn....@gmail.com>
+
+- Update to version 48.3.1:
+  + Fix Xwayland windows becoming unresponsive to events
+  + Fix drag and drop of tabs into tiled/maximized state
+
+-------------------------------------------------------------------

Old:
----
  mutter-48.3.obscpio

New:
----
  mutter-48.3.1.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ mutter.spec ++++++
--- /var/tmp/diff_new_pack.ReeCpu/_old  2025-06-10 08:57:20.771722730 +0200
+++ /var/tmp/diff_new_pack.ReeCpu/_new  2025-06-10 08:57:20.775722895 +0200
@@ -23,7 +23,7 @@
 %define libmutter libmutter-%{api_major}-%{api_minor}
 
 Name:           mutter
-Version:        48.3
+Version:        48.3.1
 Release:        0
 Summary:        Window and compositing manager based on Clutter
 License:        GPL-2.0-or-later

++++++ _service ++++++
--- /var/tmp/diff_new_pack.ReeCpu/_old  2025-06-10 08:57:20.807724215 +0200
+++ /var/tmp/diff_new_pack.ReeCpu/_new  2025-06-10 08:57:20.811724380 +0200
@@ -3,7 +3,7 @@
   <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.3</param>
+    <param name="revision">48.3.1</param>
     <param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
     <param name="versionrewrite-pattern">(.*)\+0</param>
     <param name="versionrewrite-replacement">\1</param>

++++++ mutter-48.3.obscpio -> mutter-48.3.1.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-48.3/NEWS new/mutter-48.3.1/NEWS
--- old/mutter-48.3/NEWS        2025-05-25 17:32:35.000000000 +0200
+++ new/mutter-48.3.1/NEWS      2025-06-03 00:01:18.000000000 +0200
@@ -1,3 +1,11 @@
+48.3.1
+======
+* Fix Xwayland windows becoming unresponsive to events [Jonas; !4475]
+* Fix drag and drop of tabs into tiled/maximized state [Carlos; !4468]
+
+Contributors:
+  Carlos Garnacho, Jonas Ådahl
+
 48.3
 ====
 * Use opaque dma-buf formats substitutes for scanout [Robert; !4320]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-48.3/meson.build new/mutter-48.3.1/meson.build
--- old/mutter-48.3/meson.build 2025-05-25 17:32:35.000000000 +0200
+++ new/mutter-48.3.1/meson.build       2025-06-03 00:01:18.000000000 +0200
@@ -1,5 +1,5 @@
 project('mutter', 'c',
-  version: '48.3',
+  version: '48.3.1',
   meson_version: '>= 1.3.0',
   license: 'GPL-2.0-or-later',
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-48.3/src/compositor/compositor-private.h 
new/mutter-48.3.1/src/compositor/compositor-private.h
--- old/mutter-48.3/src/compositor/compositor-private.h 2025-05-25 
17:32:35.000000000 +0200
+++ new/mutter-48.3.1/src/compositor/compositor-private.h       2025-06-03 
00:01:18.000000000 +0200
@@ -72,11 +72,11 @@
 gboolean meta_compositor_drag_window (MetaCompositor       *compositor,
                                       MetaWindow           *window,
                                       MetaGrabOp            grab_op,
+                                      MetaDragWindowFlags   flags,
                                       ClutterInputDevice   *device,
                                       ClutterEventSequence *sequence,
                                       uint32_t              timestamp,
-                                      graphene_point_t     *pos_hint,
-                                      ClutterActor         *grab_actor);
+                                      graphene_point_t     *pos_hint);
 
 MetaWindowDrag * meta_compositor_get_current_window_drag (MetaCompositor 
*compositor);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-48.3/src/compositor/compositor.c 
new/mutter-48.3.1/src/compositor/compositor.c
--- old/mutter-48.3/src/compositor/compositor.c 2025-05-25 17:32:35.000000000 
+0200
+++ new/mutter-48.3.1/src/compositor/compositor.c       2025-06-03 
00:01:18.000000000 +0200
@@ -1554,11 +1554,11 @@
 meta_compositor_drag_window (MetaCompositor       *compositor,
                              MetaWindow           *window,
                              MetaGrabOp            grab_op,
+                             MetaDragWindowFlags   flags,
                              ClutterInputDevice   *device,
                              ClutterEventSequence *sequence,
                              uint32_t              timestamp,
-                             graphene_point_t     *pos_hint,
-                             ClutterActor         *grab_actor)
+                             graphene_point_t     *pos_hint)
 {
   MetaCompositorPrivate *priv =
     meta_compositor_get_instance_private (compositor);
@@ -1575,7 +1575,7 @@
   priv->current_drag = g_steal_pointer (&window_drag);
 
   if (!meta_window_drag_begin (priv->current_drag, device,
-                               sequence, timestamp, grab_actor))
+                               sequence, timestamp, flags))
     {
       g_clear_object (&priv->current_drag);
       return FALSE;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-48.3/src/compositor/meta-window-drag.c 
new/mutter-48.3.1/src/compositor/meta-window-drag.c
--- old/mutter-48.3/src/compositor/meta-window-drag.c   2025-05-25 
17:32:35.000000000 +0200
+++ new/mutter-48.3.1/src/compositor/meta-window-drag.c 2025-06-03 
00:01:18.000000000 +0200
@@ -50,7 +50,6 @@
 
 struct _MetaWindowDrag {
   GObject parent_class;
-  ClutterActor *external_grab_actor;
 
   MetaWindow *window;
   MetaWindow *effective_grab_window;
@@ -79,7 +78,6 @@
 
   gulong unmanaged_id;
   gulong size_changed_id;
-  gulong event_handler_id;
 
   guint tile_preview_timeout_id;
   guint preview_tile_mode : 2;
@@ -389,15 +387,7 @@
   meta_window_grab_op_ended (grab_window, grab_op);
 
   if (window_drag->grab)
-    {
-      clutter_grab_dismiss (window_drag->grab);
-    }
-  else
-    {
-      g_assert (window_drag->external_grab_actor);
-      g_clear_signal_handler (&window_drag->event_handler_id,
-                              window_drag->external_grab_actor);
-    }
+    clutter_grab_dismiss (window_drag->grab);
 
   g_clear_signal_handler (&window_drag->unmanaged_id, grab_window);
   g_clear_signal_handler (&window_drag->size_changed_id, grab_window);
@@ -1767,9 +1757,9 @@
     }
 }
 
-static gboolean
-on_window_drag_event (MetaWindowDrag     *window_drag,
-                      const ClutterEvent *event)
+gboolean
+meta_window_drag_process_event (MetaWindowDrag     *window_drag,
+                                const ClutterEvent *event)
 {
   switch (clutter_event_type (event))
     {
@@ -1790,7 +1780,8 @@
                    gpointer            user_data)
 {
   MetaWindowDrag *window_drag = user_data;
-  return on_window_drag_event (window_drag, event);
+
+  return meta_window_drag_process_event (window_drag, event);
 }
 
 gboolean
@@ -1798,7 +1789,7 @@
                         ClutterInputDevice   *device,
                         ClutterEventSequence *sequence,
                         uint32_t              timestamp,
-                        ClutterActor         *grab_actor)
+                        MetaDragWindowFlags   flags)
 {
   MetaWindow *window = window_drag->window, *grab_window = NULL;
   MetaDisplay *display = meta_window_get_display (window);
@@ -1863,15 +1854,7 @@
 
   stage = CLUTTER_STAGE (meta_backend_get_stage (backend));
 
-  if (grab_actor)
-    {
-      meta_topic (META_DEBUG_WINDOW_OPS, "Reusing grab actor %p.", grab_actor);
-      window_drag->external_grab_actor = grab_actor;
-      window_drag->event_handler_id =
-        g_signal_connect_swapped (window_drag->external_grab_actor, "event",
-                                  G_CALLBACK (on_window_drag_event), 
window_drag);
-    }
-  else
+  if ((flags & META_DRAG_WINDOW_FLAG_FOREIGN_GRAB) == 0)
     {
       meta_topic (META_DEBUG_WINDOW_OPS, "Creating a new grab.");
       window_drag->grab = clutter_stage_grab_input_only_inactive (stage,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-48.3/src/compositor/meta-window-drag.h 
new/mutter-48.3.1/src/compositor/meta-window-drag.h
--- old/mutter-48.3/src/compositor/meta-window-drag.h   2025-05-25 
17:32:35.000000000 +0200
+++ new/mutter-48.3.1/src/compositor/meta-window-drag.h 2025-06-03 
00:01:18.000000000 +0200
@@ -22,6 +22,14 @@
 #include "meta/common.h"
 #include "meta/window.h"
 
+typedef enum _MetaDragWindowFlags MetaDragWindowFlags;
+
+enum _MetaDragWindowFlags
+{
+  META_DRAG_WINDOW_FLAG_NONE = 0,
+  META_DRAG_WINDOW_FLAG_FOREIGN_GRAB = 1 << 0,
+};
+
 #define META_TYPE_WINDOW_DRAG (meta_window_drag_get_type ())
 G_DECLARE_FINAL_TYPE (MetaWindowDrag, meta_window_drag,
                       META, WINDOW_DRAG, GObject)
@@ -33,7 +41,7 @@
                                  ClutterInputDevice   *device,
                                  ClutterEventSequence *sequence,
                                  uint32_t              timestamp,
-                                 ClutterActor         *grab_actor);
+                                 MetaDragWindowFlags   flags);
 
 void meta_window_drag_end (MetaWindowDrag *drag);
 
@@ -47,3 +55,6 @@
 
 void meta_window_drag_set_position_hint (MetaWindowDrag   *window_drag,
                                          graphene_point_t *pos_hint);
+
+gboolean meta_window_drag_process_event (MetaWindowDrag     *window_drag,
+                                         const ClutterEvent *event);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-48.3/src/core/window.c 
new/mutter-48.3.1/src/core/window.c
--- old/mutter-48.3/src/core/window.c   2025-05-25 17:32:35.000000000 +0200
+++ new/mutter-48.3.1/src/core/window.c 2025-06-03 00:01:18.000000000 +0200
@@ -6191,9 +6191,10 @@
 {
   return meta_compositor_drag_window (window->display->compositor,
                                       window, op,
+                                      META_DRAG_WINDOW_FLAG_NONE,
                                       device, sequence,
                                       timestamp,
-                                      pos_hint, NULL);
+                                      pos_hint);
 }
 
 MetaStackLayer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-48.3/src/frames/meta-window-tracker.c 
new/mutter-48.3.1/src/frames/meta-window-tracker.c
--- old/mutter-48.3/src/frames/meta-window-tracker.c    2025-05-25 
17:32:35.000000000 +0200
+++ new/mutter-48.3.1/src/frames/meta-window-tracker.c  2025-06-03 
00:01:18.000000000 +0200
@@ -263,21 +263,6 @@
       xwindow = xevent->xcreatewindow.window;
       listen_set_up_frame (window_tracker, xwindow);
     }
-  else if (xevent->type == ConfigureNotify &&
-           xevent->xconfigure.event == xroot)
-    {
-      gboolean has_frame;
-
-      xwindow = xevent->xconfigure.window;
-      has_frame =
-        g_hash_table_contains (window_tracker->frames,
-                               GUINT_TO_POINTER (xwindow));
-
-      if (!xevent->xconfigure.override_redirect && !has_frame)
-        listen_set_up_frame (window_tracker, xwindow);
-      else if (xevent->xconfigure.override_redirect && has_frame)
-        remove_frame (window_tracker, xwindow);
-    }
   else if (xevent->type == DestroyNotify)
     {
       xwindow = xevent->xdestroywindow.window;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-48.3/src/wayland/meta-wayland-toplevel-drag.c 
new/mutter-48.3.1/src/wayland/meta-wayland-toplevel-drag.c
--- old/mutter-48.3/src/wayland/meta-wayland-toplevel-drag.c    2025-05-25 
17:32:35.000000000 +0200
+++ new/mutter-48.3.1/src/wayland/meta-wayland-toplevel-drag.c  2025-06-03 
00:01:18.000000000 +0200
@@ -70,9 +70,26 @@
 on_window_drag_ended (MetaWindowDrag          *window_drag,
                       MetaWaylandToplevelDrag *toplevel_drag)
 {
+  MetaWaylandSeat *seat = NULL;
+  MetaWaylandInput *input;
+  MetaWindowActor *window_actor;
+  MetaWindow *window;
+
   meta_topic (META_DEBUG_WAYLAND, "Window drag ended.");
+  window = meta_window_drag_get_window (toplevel_drag->window_drag);
+
+  window_actor = meta_window_actor_from_window (window);
+  if (window_actor)
+    meta_window_actor_set_tied_to_drag (window_actor, FALSE);
+
   g_clear_signal_handler (&toplevel_drag->drag_ended_handler_id, window_drag);
   toplevel_drag->window_drag = NULL;
+
+  seat = meta_wayland_data_source_get_seat (toplevel_drag->data_source);
+  input = meta_wayland_seat_get_input (seat);
+
+  meta_wayland_input_detach_event_handler (input, toplevel_drag->handler);
+  toplevel_drag->handler = NULL;
 }
 
 static void
@@ -121,6 +138,47 @@
   return meta_wayland_surface_role_get_surface (surface_role);
 }
 
+static MetaWaylandSurface *
+toplevel_drag_get_focus_surface (MetaWaylandEventHandler *handler,
+                                 ClutterInputDevice      *device,
+                                 ClutterEventSequence    *sequence,
+                                 gpointer                 user_data)
+{
+  return meta_wayland_event_handler_chain_up_get_focus_surface (handler,
+                                                                device,
+                                                                sequence);
+}
+
+static void
+toplevel_drag_focus (MetaWaylandEventHandler *handler,
+                     ClutterInputDevice      *device,
+                     ClutterEventSequence    *sequence,
+                     MetaWaylandSurface      *surface,
+                     gpointer                 user_data)
+{
+  meta_wayland_event_handler_chain_up_focus (handler, device, sequence, 
surface);
+}
+
+static gboolean
+toplevel_drag_propagate_event (MetaWaylandEventHandler *handler,
+                               const ClutterEvent      *event,
+                               gpointer                 user_data)
+{
+  MetaWaylandToplevelDrag *toplevel_drag = user_data;
+
+  return meta_window_drag_process_event (toplevel_drag->window_drag, event);
+}
+
+static MetaWaylandEventInterface event_interface = {
+  toplevel_drag_get_focus_surface,
+  toplevel_drag_focus,
+  toplevel_drag_propagate_event, /* motion */
+  toplevel_drag_propagate_event, /* press */
+  toplevel_drag_propagate_event, /* release */
+  toplevel_drag_propagate_event, /* key */
+  toplevel_drag_propagate_event, /* other */
+};
+
 static void
 start_window_drag (MetaWindow              *dragged_window,
                    MetaWaylandToplevelDrag *toplevel_drag,
@@ -129,11 +187,9 @@
   MetaWaylandSeat *seat;
   MetaWaylandDragGrab *drag_grab;
   MetaSurfaceActor *surface_actor;
-  MetaContext *context;
-  MetaBackend *backend;
+  MetaWaylandInput *input;
   ClutterInputDevice *device;
   ClutterEventSequence *sequence;
-  ClutterActor *stage, *grab_actor;
   MetaCompositor *compositor;
   uint32_t timestamp;
   gboolean started;
@@ -167,17 +223,12 @@
   device = meta_wayland_drag_grab_get_device (drag_grab, &sequence);
   timestamp = meta_display_get_current_time_roundtrip 
(dragged_window->display);
 
-  /* Re-use the current wayland input's grab actor for the newly started
-   * window drag session. */
-  context = meta_display_get_context (dragged_window->display);
-  backend = meta_context_get_backend (context);
-  stage = meta_backend_get_stage (backend);
-  grab_actor = clutter_stage_get_grab_actor (CLUTTER_STAGE (stage));
-
   compositor = dragged_window->display->compositor;
   started = meta_compositor_drag_window (compositor, dragged_window,
-                                         META_GRAB_OP_MOVING_UNCONSTRAINED, 
device,
-                                         sequence, timestamp, offset_hint, 
grab_actor);
+                                         META_GRAB_OP_MOVING_UNCONSTRAINED,
+                                         META_DRAG_WINDOW_FLAG_FOREIGN_GRAB,
+                                         device, sequence,
+                                         timestamp, offset_hint);
   if (!started)
     return;
 
@@ -187,6 +238,13 @@
                       "ended",
                       G_CALLBACK (on_window_drag_ended),
                       toplevel_drag);
+
+  input = meta_wayland_seat_get_input (seat);
+  toplevel_drag->handler =
+    meta_wayland_input_attach_event_handler (input,
+                                             &event_interface,
+                                             TRUE,
+                                             toplevel_drag);
 }
 
 static void
@@ -391,7 +449,6 @@
 meta_wayland_toplevel_drag_end (MetaWaylandToplevelDrag *toplevel_drag)
 {
   MetaWindow *window;
-  MetaWindowActor *window_actor;
   MetaSurfaceActor *surface_actor;
 
   g_return_if_fail (toplevel_drag != NULL);
@@ -399,14 +456,7 @@
 
   if (toplevel_drag->window_drag)
     {
-      window = meta_window_drag_get_window (toplevel_drag->window_drag);
-      g_clear_signal_handler (&toplevel_drag->drag_ended_handler_id,
-                              toplevel_drag->window_drag);
       meta_window_drag_end (toplevel_drag->window_drag);
-
-      window_actor = meta_window_actor_from_window (window);
-      if (window_actor)
-        meta_window_actor_set_tied_to_drag (window_actor, FALSE);
       toplevel_drag->window_drag = NULL;
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mutter-48.3/src/wayland/meta-wayland-toplevel-drag.h 
new/mutter-48.3.1/src/wayland/meta-wayland-toplevel-drag.h
--- old/mutter-48.3/src/wayland/meta-wayland-toplevel-drag.h    2025-05-25 
17:32:35.000000000 +0200
+++ new/mutter-48.3.1/src/wayland/meta-wayland-toplevel-drag.h  2025-06-03 
00:01:18.000000000 +0200
@@ -27,6 +27,7 @@
 #include "mtk/mtk.h"
 #include "wayland/meta-wayland-types.h"
 #include "wayland/meta-wayland-data-source.h"
+#include "wayland/meta-wayland-input.h"
 
 struct _MetaWaylandToplevelDrag
 {
@@ -37,6 +38,7 @@
   int32_t x_offset, y_offset;
 
   MetaWindowDrag *window_drag;
+  MetaWaylandEventHandler *handler;
   gulong window_unmanaging_handler_id;
   gulong window_shown_handler_id;
   gulong drag_ended_handler_id;

++++++ mutter.obsinfo ++++++
--- /var/tmp/diff_new_pack.ReeCpu/_old  2025-06-10 08:57:22.243783446 +0200
+++ /var/tmp/diff_new_pack.ReeCpu/_new  2025-06-10 08:57:22.247783611 +0200
@@ -1,5 +1,5 @@
 name: mutter
-version: 48.3
-mtime: 1748187155
-commit: 9e8c48ac31b06a9a42d50f8dd8ca6cf4595e435b
+version: 48.3.1
+mtime: 1748901678
+commit: b8eb8246ffa306adbada1106d3a6a7d5a609530a
 

Reply via email to