Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock
X-Debbugs-Cc: mut...@packages.debian.org
Control: affects -1 + src:mutter

I'd like to upload a new upstream bug fix release of mutter.

[ Reason ]
Catch up with upstream 43.4 bug fix release, and cherry-pick patches
that were already accepted for 43.5.

[ Impact ]
Multiple bug fixes and one translation update. Also transfer various
earlier bug fixes from Debian patches into part of the upstream source.

[ Tests ]
I used a previous release-candidate on my Intel laptop for several days
without noticing any regressions. The only change since that version is
the Abkhazian translation update.

Upstream's automated tests (at build-time and during autopkgtest) have the
same coverage and results as the version currently in bookworm.

[ Risks ]
Key package with high visibility in our default desktop environment, but
the changes are narrowly targeted.

[ Checklist ]
  [x] all changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in testing
      (filtered to exclude patch contents and translations)

[ Other info ]
This has only been tested together with the corresponding gnome-shell
update.

There is a remaining X11 focus issue that I'd like to be able to fix in
bookworm (#1032388) but upstream does not have a solution for it yet,
and the version already in testing has the same bug.

unblock mutter/43.4-1
debdiff *.dsc | filterdiff -p1 -x'po/*.po' -x'debian/patches/*.patch'

diffstat for mutter-43.3 mutter-43.4

 NEWS                                                                           |   13 
 clutter/clutter/clutter-text.c                                                 |    1 
 cogl/cogl/cogl-framebuffer.c                                                   |    2 
 cogl/cogl/cogl-onscreen.c                                                      |   18 
 cogl/cogl/cogl-onscreen.h                                                      |    3 
 debian/changelog                                                               |   23 
 debian/patches/Revert-x11-Do-not-move-X11-input-focus-during-grabs.patch       |   87 
 debian/patches/Revert-x11-events-Do-not-update-focus-XWindow-during-grab.patch |   36 
 debian/patches/Update-Abkhazian-translation.patch                              | 4262 ++++++++++
 debian/patches/color-device-Don-t-close-lcms-profile-on-error-from-cd_ic.patch |   52 
 debian/patches/color-device-Make-sure-lcms_context-is-not-NULL.patch           |   47 
 debian/patches/core-Avoid-focusing-windows-on-map-during-grabs.patch           |   35 
 debian/patches/debian/Support-Dynamic-triple-double-buffering.patch            |    8 
 debian/patches/debian/meson-Do-not-mark-CI-test-tools-as-required.patch        |    2 
 debian/patches/meson-add-back-default_driver-option.patch                      |    2 
 debian/patches/series                                                          |   10 
 debian/patches/wayland-Don-t-overwrite-surface-offsets.patch                   |   57 
 debian/patches/wayland-Skip-subsurface-desync-if-parent-is-NULL.patch          |   35 
 debian/patches/x11-Avoid-updating-focus-on-wayland-compositor.patch            |   47 
 debian/patches/x11-Ignore-_NET_ACTIVE_WINDOW-client-messages-while-grabb.patch |   45 
 meson.build                                                                    |    2 
 po/ab.po                                                                       | 4159 +++++++++
 src/backends/meta-stage-impl.c                                                 |   14 
 src/wayland/meta-wayland-subsurface.c                                          |    6 
 24 files changed, 8509 insertions(+), 457 deletions(-)

diff -Nru mutter-43.3/clutter/clutter/clutter-text.c mutter-43.4/clutter/clutter/clutter-text.c
--- mutter-43.3/clutter/clutter/clutter-text.c	2023-02-13 18:12:26.000000000 +0000
+++ mutter-43.4/clutter/clutter/clutter-text.c	2023-03-19 22:26:48.000000000 +0000
@@ -1826,7 +1826,6 @@
 
   clutter_text_free_paint_volume (self);
 
-  clutter_text_set_buffer (self, NULL);
   g_free (priv->font_name);
 
   g_clear_object (&priv->input_focus);
diff -Nru mutter-43.3/cogl/cogl/cogl-framebuffer.c mutter-43.4/cogl/cogl/cogl-framebuffer.c
--- mutter-43.3/cogl/cogl/cogl-framebuffer.c	2023-02-13 18:12:26.000000000 +0000
+++ mutter-43.4/cogl/cogl/cogl-framebuffer.c	2023-03-19 22:26:48.000000000 +0000
@@ -1695,8 +1695,6 @@
   CoglFramebufferPrivate *priv =
     cogl_framebuffer_get_instance_private (framebuffer);
 
-  g_return_if_fail (buffers & COGL_BUFFER_BIT_COLOR);
-
   cogl_framebuffer_driver_discard_buffers (priv->driver, buffers);
 }
 
diff -Nru mutter-43.3/cogl/cogl/cogl-onscreen.c mutter-43.4/cogl/cogl/cogl-onscreen.c
--- mutter-43.3/cogl/cogl/cogl-onscreen.c	2023-04-10 14:26:00.000000000 +0100
+++ mutter-43.4/cogl/cogl/cogl-onscreen.c	2023-04-10 14:26:01.000000000 +0100
@@ -334,17 +334,16 @@
   if (G_UNLIKELY (COGL_DEBUG_ENABLED (COGL_DEBUG_SYNC_FRAME)))
     cogl_framebuffer_finish (framebuffer);
 
+  cogl_framebuffer_discard_buffers (framebuffer,
+                                    COGL_BUFFER_BIT_DEPTH |
+                                    COGL_BUFFER_BIT_STENCIL);
+
   klass->swap_buffers_with_damage (onscreen,
                                    rectangles,
                                    n_rectangles,
                                    info,
                                    user_data);
 
-  cogl_framebuffer_discard_buffers (framebuffer,
-                                    COGL_BUFFER_BIT_COLOR |
-                                    COGL_BUFFER_BIT_DEPTH |
-                                    COGL_BUFFER_BIT_STENCIL);
-
   if (!_cogl_winsys_has_feature (COGL_WINSYS_FEATURE_SYNC_AND_COMPLETE_EVENT))
     {
       CoglFrameInfo *info;
@@ -395,17 +394,16 @@
      COGL_WINSYS_FEATURE_SWAP_REGION */
   g_return_if_fail (klass->swap_region);
 
+  cogl_framebuffer_discard_buffers (framebuffer,
+                                    COGL_BUFFER_BIT_DEPTH |
+                                    COGL_BUFFER_BIT_STENCIL);
+
   klass->swap_region (onscreen,
                       rectangles,
                       n_rectangles,
                       info,
                       user_data);
 
-  cogl_framebuffer_discard_buffers (framebuffer,
-                                    COGL_BUFFER_BIT_COLOR |
-                                    COGL_BUFFER_BIT_DEPTH |
-                                    COGL_BUFFER_BIT_STENCIL);
-
   if (!_cogl_winsys_has_feature (COGL_WINSYS_FEATURE_SYNC_AND_COMPLETE_EVENT))
     {
       CoglFrameInfo *info;
diff -Nru mutter-43.3/cogl/cogl/cogl-onscreen.h mutter-43.4/cogl/cogl/cogl-onscreen.h
--- mutter-43.3/cogl/cogl/cogl-onscreen.h	2023-02-13 18:12:26.000000000 +0000
+++ mutter-43.4/cogl/cogl/cogl-onscreen.h	2023-03-19 22:26:48.000000000 +0000
@@ -242,6 +242,9 @@
  * This immediately queues state to OpenGL that will be used for the
  * next swap.
  * This needs to be called every frame.
+ *
+ * The expected values are independent of any viewport transforms applied to
+ * the framebuffer.
  */
 COGL_EXPORT void
 cogl_onscreen_queue_damage_region (CoglOnscreen *onscreen,
diff -Nru mutter-43.3/debian/changelog mutter-43.4/debian/changelog
--- mutter-43.3/debian/changelog	2023-03-06 11:35:23.000000000 +0000
+++ mutter-43.4/debian/changelog	2023-04-10 14:07:33.000000000 +0100
@@ -1,3 +1,24 @@
+mutter (43.4-1) unstable; urgency=medium
+
+  * Team upload
+  * New upstream release
+    - Improve performance by reducing memory bandwidth use on some GPUs
+      (GNOME/mutter!2091)
+    - Fix handling of rotated screens, for example on Pinephone Pro and
+      Pinebook Pro (GNOME/mutter#2557)
+    - Avoid warnings when destroying a ClutterText object with recent
+      GLib versions (GNOME/mutter#2566)
+    - Other changes were included in previous Debian packaging updates
+  * Drop most patches, applied upstream
+  * d/patches: Update to upstream gnome-43 branch commit 43.4-2-gba5cb0542
+    - Fix a crash with newer GStreamer gtkwaylandsink (GNOME/mutter!2917)
+    - Translation update: ab
+  * Remove #1032388 from previous changelog entry.
+    I hoped !2878 would fix both #1032388 and #1031945, but in fact it
+    only fixes #1031945.
+
+ -- Simon McVittie <s...@debian.org>  Mon, 10 Apr 2023 14:07:33 +0100
+
 mutter (43.3-5) unstable; urgency=medium
 
   * Team upload
@@ -10,7 +31,7 @@
     d/p/x11-Ignore-_NET_ACTIVE_WINDOW-client-messages-while-grabb.patch,
     d/p/core-Avoid-focusing-windows-on-map-during-grabs.patch:
     Backport upstream merge request !2878, fixing X11 focus regressions
-    (Closes: #1032388, #1031945)
+    (Closes: #1031945)
   * d/p/tests-Use-a-more-interoperable-path-to-bash.patch:
     Fix path to interpreter in x11-test.sh instead of disabling it
     - d/p/tests-Disable-broken-test.patch: Drop patch, no longer needed
diff -Nru mutter-43.3/debian/patches/series mutter-43.4/debian/patches/series
--- mutter-43.3/debian/patches/series	2023-03-06 11:35:23.000000000 +0000
+++ mutter-43.4/debian/patches/series	2023-04-10 14:07:33.000000000 +0100
@@ -1,11 +1,5 @@
-wayland-Don-t-overwrite-surface-offsets.patch
-x11-Avoid-updating-focus-on-wayland-compositor.patch
-color-device-Make-sure-lcms_context-is-not-NULL.patch
-color-device-Don-t-close-lcms-profile-on-error-from-cd_ic.patch
-Revert-x11-Do-not-move-X11-input-focus-during-grabs.patch
-Revert-x11-events-Do-not-update-focus-XWindow-during-grab.patch
-x11-Ignore-_NET_ACTIVE_WINDOW-client-messages-while-grabb.patch
-core-Avoid-focusing-windows-on-map-during-grabs.patch
+wayland-Skip-subsurface-desync-if-parent-is-NULL.patch
+Update-Abkhazian-translation.patch
 tests-Break-up-stacking-installed-tests-into-more-smaller.patch
 tests-Use-a-more-interoperable-path-to-bash.patch
 meson-add-back-default_driver-option.patch
diff -Nru mutter-43.3/meson.build mutter-43.4/meson.build
--- mutter-43.3/meson.build	2023-04-10 14:26:00.000000000 +0100
+++ mutter-43.4/meson.build	2023-04-10 14:26:01.000000000 +0100
@@ -1,5 +1,5 @@
 project('mutter', 'c',
-  version: '43.3',
+  version: '43.4',
   meson_version: '>= 0.55.0',
   license: 'GPLv2+'
 )
diff -Nru mutter-43.3/NEWS mutter-43.4/NEWS
--- mutter-43.3/NEWS	2023-02-13 18:12:26.000000000 +0000
+++ mutter-43.4/NEWS	2023-03-19 22:26:48.000000000 +0000
@@ -1,3 +1,16 @@
+43.4
+====
+* Do not overwrite previously set offsets on attach [Matthias; !2843]
+* Fix Xwayland focus regressions [Carlos; !2848, !2878]
+* Memory handling fixes [Simon; !2877]
+* Reduce memory bandwidth usage in some GPUs [Erico; !2091]
+* Fix partial updates on offscreen rotated screens [Robert; !2860]
+* Fix a frequent warning when running with recent glib [Sebastian; !2790]
+
+Contributors:
+  Matthias Clasen, Carlos Garnacho, Sebastian Keller, Robert Mader,
+  Simon McVittie, Erico Nunes
+
 43.3
 ====
 * Skip resize effects for tiled windows during user grabs [Michael; !2579]
diff -Nru mutter-43.3/src/backends/meta-stage-impl.c mutter-43.4/src/backends/meta-stage-impl.c
--- mutter-43.3/src/backends/meta-stage-impl.c	2023-04-10 14:26:00.000000000 +0100
+++ mutter-43.4/src/backends/meta-stage-impl.c	2023-04-10 14:26:01.000000000 +0100
@@ -214,6 +214,8 @@
   g_autofree int *freeme = NULL;
   CoglFramebuffer *framebuffer;
   CoglOnscreen *onscreen;
+  int fb_width;
+  int fb_height;
 
   if (cairo_region_is_empty (damage_region))
     return;
@@ -223,6 +225,8 @@
     return;
 
   onscreen = COGL_ONSCREEN (framebuffer);
+  fb_width = cogl_framebuffer_get_width (framebuffer);
+  fb_height = cogl_framebuffer_get_height (framebuffer);
 
   n_rects = cairo_region_num_rectangles (damage_region);
 
@@ -234,12 +238,18 @@
   for (i = 0; i < n_rects; i++)
     {
       cairo_rectangle_int_t rect;
-      int height = cogl_framebuffer_get_height (framebuffer);
 
       cairo_region_get_rectangle (damage_region, i, &rect);
+
+      clutter_stage_view_transform_rect_to_onscreen (stage_view,
+                                                     &rect,
+                                                     fb_width,
+                                                     fb_height,
+                                                     &rect);
+
       damage[i * 4] = rect.x;
       /* y coordinate needs to be flipped for OpenGL */
-      damage[i * 4 + 1] = height - rect.y - rect.height;
+      damage[i * 4 + 1] = fb_height - rect.y - rect.height;
       damage[i * 4 + 2] = rect.width;
       damage[i * 4 + 3] = rect.height;
     }
diff -Nru mutter-43.3/src/wayland/meta-wayland-subsurface.c mutter-43.4/src/wayland/meta-wayland-subsurface.c
--- mutter-43.3/src/wayland/meta-wayland-subsurface.c	2023-02-13 18:12:26.000000000 +0000
+++ mutter-43.4/src/wayland/meta-wayland-subsurface.c	2023-04-10 14:26:01.000000000 +0100
@@ -462,13 +462,15 @@
                           struct wl_resource *resource)
 {
   MetaWaylandSurface *surface = wl_resource_get_user_data (resource);
+  MetaWaylandSurface *parent;
   gboolean is_parent_effectively_synchronized;
 
-  if (!surface->sub.synchronous)
+  parent = surface->sub.parent;
+  if (!parent || !surface->sub.synchronous)
     return;
 
   is_parent_effectively_synchronized =
-    is_surface_effectively_synchronized (surface->sub.parent);
+    is_surface_effectively_synchronized (parent);
 
   if (!is_parent_effectively_synchronized)
     meta_wayland_surface_apply_cached_state (surface);

Reply via email to