1
0
Fork 0

Add mr2751 & update mr2671

Signed-off-by: Mingi Sung <FiestaLake@protonmail.com>
This commit is contained in:
Mingi Sung 2022-12-12 13:00:20 +09:00
parent 2366728001
commit ab7fabf446
No known key found for this signature in database
GPG key ID: 67B568F99ECE42DC
4 changed files with 118 additions and 27 deletions

View file

@ -1,7 +1,7 @@
pkgbase = mutter-performance
pkgdesc = A window manager for GNOME | Attempts to improve performances with non-upstreamed merge-requests and frequent stable branch resync
pkgver = 43.2
pkgrel = 1
pkgrel = 2
url = https://gitlab.gnome.org/GNOME/mutter
arch = x86_64
license = GPL
@ -36,11 +36,13 @@ pkgbase = mutter-performance
source = mr1880.patch
source = mr2702.patch
source = mr2671.patch
source = mr2751.patch
sha256sums = SKIP
sha256sums = d7a014965cbb90892ccbe65d0de49ddce50191dbd7521467d7f11c2f4825045c
sha256sums = 65981409a5fc5ebfa95c7178f588cb2564f405cf55cbc7a315ecd4ac6c892b1c
sha256sums = 1b0647ab0d39db3b334e86c39dbb81b80030339c8d1a9cd43ff88003e966dec2
sha256sums = dc0520fd8e9e9d4e76ebfe9e95f72f25bad18a149d04db9d0d35806f1903326c
sha256sums = 3737094e4d9c71b31a7e38922ad67d64e77a78524e492ecc9fc4172e129c9acc
sha256sums = dfa55caa40e970fca74e68a74d104db92438950b4fc954717963b857e4cd28f1
pkgname = mutter-performance
groups = gnome

View file

@ -12,8 +12,8 @@
### PACKAGE OPTIONS
## MERGE REQUESTS SELECTION
# Merge Requests List: ('579' '1441' '1880' '2671' '2702')
_merge_requests_to_use=('1441' '1880' '2671' '2702')
# Merge Requests List: ('579' '1441' '1880' '2671' '2702' '2751')
_merge_requests_to_use=('1441' '1880' '2671' '2702' '2751')
## Disable building the DOCS package (Enabled if not set)
# Remember to unset this variable when producing .SRCINFO
@ -32,7 +32,7 @@ else
pkgname=(mutter-performance mutter-performance-docs)
fi
pkgver=43.2
pkgrel=1
pkgrel=2
pkgdesc="A window manager for GNOME | Attempts to improve performances with non-upstreamed merge-requests and frequent stable branch resync"
url="https://gitlab.gnome.org/GNOME/mutter"
arch=(x86_64)
@ -51,12 +51,14 @@ source=("$pkgname::git+https://gitlab.gnome.org/GNOME/mutter.git#commit=$_commit
'mr1441.patch'
'mr1880.patch'
'mr2702.patch'
'mr2671.patch')
'mr2671.patch'
'mr2751.patch')
sha256sums=('SKIP'
'd7a014965cbb90892ccbe65d0de49ddce50191dbd7521467d7f11c2f4825045c'
'65981409a5fc5ebfa95c7178f588cb2564f405cf55cbc7a315ecd4ac6c892b1c'
'1b0647ab0d39db3b334e86c39dbb81b80030339c8d1a9cd43ff88003e966dec2'
'dc0520fd8e9e9d4e76ebfe9e95f72f25bad18a149d04db9d0d35806f1903326c')
'3737094e4d9c71b31a7e38922ad67d64e77a78524e492ecc9fc4172e129c9acc'
'dfa55caa40e970fca74e68a74d104db92438950b4fc954717963b857e4cd28f1')
pkgver() {
cd $pkgname
@ -168,6 +170,16 @@ prepare() {
# NOTE: This changes mutter's behaviors, which can bring regressions when using some extensions.
pick_mr '2671' 'mr2671.patch' 'patch'
# Title: [43] tiling: Skip the resize effect for tiled windows during user grabs
# Author: Michael Webster <miketwebster@gmail.com>
# Author: Robert Mader <robert.mader@posteo.de>
# URL: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2751
# Type: 1
# Status: 2
# Comment: The incremental changes don't need to be animated.
# Closes: #2246 (closed)
pick_mr '2751' 'mr2751.patch' 'patch'
}
build() {

View file

@ -1,8 +1,8 @@
Author: Robert Mader <robert.mader@posteo.de>
Source: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2671
Editor: Mingi Sung <FiestaLake@protonmail.com>
Commit: 81caa2f08e8d95ceba405b414802fb740d906fdf
Last Updated: 12/3/22 (Mutter 43.1+r24+g030e9b8b2-1)
Commit: a7c4ee8c8b38363e9173dec4eaeb7ba07b0212fe
Last Updated: 12/12/22 (Mutter 43.2-2)
---
Avoid some allocations, save some CPU cycles and make the code easier
@ -22,8 +22,34 @@ not fully obscurred and has clones on other views, as well as generally
fewer lookups and less code in most common cases, compensate for that.
---
diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c
index da5ea1470..e52fbb510 100644
--- a/clutter/clutter/clutter-actor.c
+++ b/clutter/clutter/clutter-actor.c
@@ -15719,11 +15719,21 @@ clutter_actor_is_effectively_on_stage_view (ClutterActor *self,
ClutterActor *clone = key;
GList *clone_views;
+ if (!CLUTTER_ACTOR_IS_MAPPED (clone))
+ continue;
+
clone_views = clutter_actor_peek_stage_views (clone);
if (g_list_find (clone_views, view))
return TRUE;
}
}
+
+ /* Clones will force-show their own source actor but not children of
+ * it, so if we're hidden and an actor up the hierarchy has a clone,
+ * we won't be visible.
+ */
+ if (!CLUTTER_ACTOR_IS_VISIBLE (actor))
+ return FALSE;
}
return FALSE;
diff --git a/src/compositor/meta-surface-actor-wayland.c b/src/compositor/meta-surface-actor-wayland.c
index b58f328dc3272b9f418beda90c607b1759d5b345..1dcadde660e0a26075730667a3dd664891d8fe0f 100644
index b58f328dc..b8d354627 100644
--- a/src/compositor/meta-surface-actor-wayland.c
+++ b/src/compositor/meta-surface-actor-wayland.c
@@ -67,60 +67,79 @@ meta_surface_actor_wayland_is_opaque (MetaSurfaceActor *actor)
@ -34,8 +60,8 @@ index b58f328dc3272b9f418beda90c607b1759d5b345..1dcadde660e0a26075730667a3dd6648
-meta_surface_actor_wayland_get_current_primary_view (MetaSurfaceActor *actor,
- ClutterStage *stage)
+gboolean
+meta_surface_actor_wayland_is_stage_view_current_primary_view (MetaSurfaceActor *actor,
+ ClutterStageView *stage_view)
+meta_surface_actor_wayland_is_view_primary (MetaSurfaceActor *actor,
+ ClutterStageView *stage_view)
{
ClutterStageView *current_primary_view = NULL;
float highest_refresh_rate = 0.f;
@ -94,11 +120,11 @@ index b58f328dc3272b9f418beda90c607b1759d5b345..1dcadde660e0a26075730667a3dd6648
+ }
+
+ l = clutter_actor_peek_stage_views (CLUTTER_ACTOR (actor));
+ g_assert (l != NULL);
+ g_return_val_if_fail (l, FALSE);
+
+ if (!l->next)
+ {
+ g_warn_if_fail (l->data == stage_view);
+ g_return_val_if_fail (l->data == stage_view, FALSE);
+ return !meta_surface_actor_is_obscured (actor);
+ }
+
@ -136,7 +162,7 @@ index b58f328dc3272b9f418beda90c607b1759d5b345..1dcadde660e0a26075730667a3dd6648
static void
diff --git a/src/compositor/meta-surface-actor-wayland.h b/src/compositor/meta-surface-actor-wayland.h
index 1a349af91f250978ff356a3114d1da3817010089..1898147d55e0180efdb7320efbf421ad67958b24 100644
index 1a349af91..fa0550f66 100644
--- a/src/compositor/meta-surface-actor-wayland.h
+++ b/src/compositor/meta-surface-actor-wayland.h
@@ -44,8 +44,8 @@ MetaSurfaceActor * meta_surface_actor_wayland_new (MetaWaylandSurface *surface);
@ -145,16 +171,16 @@ index 1a349af91f250978ff356a3114d1da3817010089..1898147d55e0180efdb7320efbf421ad
-ClutterStageView * meta_surface_actor_wayland_get_current_primary_view (MetaSurfaceActor *actor,
- ClutterStage *stage);
+gboolean meta_surface_actor_wayland_is_stage_view_current_primary_view (MetaSurfaceActor *actor,
+ ClutterStageView *stage_view);
+gboolean meta_surface_actor_wayland_is_view_primary (MetaSurfaceActor *actor,
+ ClutterStageView *stage_view);
G_END_DECLS
diff --git a/src/wayland/meta-wayland-actor-surface.c b/src/wayland/meta-wayland-actor-surface.c
index f4ad2d0e4fadb0ec7cfc783a767428ef130ec01c..a00ab4361ef6c2de5612514254d6983f293391e6 100644
index 362785c89..2b76d943a 100644
--- a/src/wayland/meta-wayland-actor-surface.c
+++ b/src/wayland/meta-wayland-actor-surface.c
@@ -307,10 +307,15 @@ meta_wayland_actor_surface_apply_state (MetaWaylandSurfaceRole *surface_role,
@@ -304,10 +304,15 @@ meta_wayland_actor_surface_apply_state (MetaWaylandSurfaceRole *surface_role,
priv->actor &&
!meta_surface_actor_is_obscured (priv->actor))
{
@ -174,7 +200,7 @@ index f4ad2d0e4fadb0ec7cfc783a767428ef130ec01c..a00ab4361ef6c2de5612514254d6983f
meta_wayland_actor_surface_queue_frame_callbacks (actor_surface, pending);
diff --git a/src/wayland/meta-wayland-presentation-time.c b/src/wayland/meta-wayland-presentation-time.c
index fb99445eb70dd72d95e8e425a3230be8505b8b25..0025b62e1e6a0381f30b70e3ef2da817dc3dc214 100644
index fb99445eb..5fe17191c 100644
--- a/src/wayland/meta-wayland-presentation-time.c
+++ b/src/wayland/meta-wayland-presentation-time.c
@@ -156,7 +156,6 @@ on_after_paint (ClutterStage *stage,
@ -192,16 +218,16 @@ index fb99445eb70dd72d95e8e425a3230be8505b8b25..0025b62e1e6a0381f30b70e3ef2da817
- surface_primary_view =
- meta_surface_actor_wayland_get_current_primary_view (actor, stage);
- if (stage_view != surface_primary_view)
+ if (!meta_surface_actor_wayland_is_stage_view_current_primary_view (actor,
+ stage_view))
+ if (!meta_surface_actor_wayland_is_view_primary (actor,
+ stage_view))
continue;
if (!wl_list_empty (&surface->presentation_time.feedback_list))
diff --git a/src/wayland/meta-wayland.c b/src/wayland/meta-wayland.c
index 1db0838bb6da99dd25d7e6bb565a1ce5f723bfe3..df70daa624f6ec64cb9d0d9e4f795976618afdf0 100644
index 9d066b19c..b3888650a 100644
--- a/src/wayland/meta-wayland.c
+++ b/src/wayland/meta-wayland.c
@@ -229,7 +229,6 @@ on_after_update (ClutterStage *stage,
@@ -224,7 +224,6 @@ on_after_update (ClutterStage *stage,
MetaWaylandSurface *surface = l->data;
MetaSurfaceActor *actor;
MetaWaylandActorSurface *actor_surface;
@ -209,15 +235,15 @@ index 1db0838bb6da99dd25d7e6bb565a1ce5f723bfe3..df70daa624f6ec64cb9d0d9e4f795976
l = l->next;
@@ -237,9 +236,8 @@ on_after_update (ClutterStage *stage,
@@ -232,9 +231,8 @@ on_after_update (ClutterStage *stage,
if (!actor)
continue;
- surface_primary_view =
- meta_surface_actor_wayland_get_current_primary_view (actor, stage);
- if (stage_view != surface_primary_view)
+ if (!meta_surface_actor_wayland_is_stage_view_current_primary_view (actor,
+ stage_view))
+ if (!meta_surface_actor_wayland_is_view_primary (actor,
+ stage_view))
continue;
actor_surface = META_WAYLAND_ACTOR_SURFACE (surface->role);

51
mr2751.patch Normal file
View file

@ -0,0 +1,51 @@
Author: Michael Webster <miketwebster@gmail.com>
Author: Robert Mader <robert.mader@posteo.de>
Source: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2751
Editor: Mingi Sung <FiestaLake@protonmail.com>
Commit: d93f5cf293863b11b326291cab2c79eb6871d0b6
Last Updated: 12/12/22 (Mutter 43.2-2)
---
meta_window_tile ends up being called during each update_resize,
but the incremental changes don't need to be animated.
Closes: #2246 (closed)
---
diff --git a/src/core/window.c b/src/core/window.c
index 744e7369632e7f3a0a44c190fdbe3051122e26da..c5ee5af50674d90780fdb61e3b37398cd6ec9816 100644
--- a/src/core/window.c
+++ b/src/core/window.c
@@ -2910,7 +2910,6 @@ meta_window_tile (MetaWindow *window,
MetaTileMode tile_mode)
{
MetaMaximizeFlags directions;
- MetaRectangle old_frame_rect, old_buffer_rect;
g_return_if_fail (META_IS_WINDOW (window));
@@ -2936,15 +2935,17 @@ meta_window_tile (MetaWindow *window,
meta_window_maximize_internal (window, directions, NULL);
meta_display_update_tile_preview (window->display, FALSE);
- /* Setup the edge constraints */
- update_edge_constraints (window);
+ if (!window->tile_match || window->tile_match != window->display->grab_window)
+ {
+ MetaRectangle old_frame_rect, old_buffer_rect;
- meta_window_get_frame_rect (window, &old_frame_rect);
- meta_window_get_buffer_rect (window, &old_buffer_rect);
+ meta_window_get_frame_rect (window, &old_frame_rect);
+ meta_window_get_buffer_rect (window, &old_buffer_rect);
- meta_compositor_size_change_window (window->display->compositor, window,
- META_SIZE_CHANGE_MAXIMIZE,
- &old_frame_rect, &old_buffer_rect);
+ meta_compositor_size_change_window (window->display->compositor, window,
+ META_SIZE_CHANGE_MAXIMIZE,
+ &old_frame_rect, &old_buffer_rect);
+ }
meta_window_move_resize_internal (window,
(META_MOVE_RESIZE_MOVE_ACTION |