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

View file

@ -12,8 +12,8 @@
### PACKAGE OPTIONS ### PACKAGE OPTIONS
## MERGE REQUESTS SELECTION ## MERGE REQUESTS SELECTION
# Merge Requests List: ('579' '1441' '1880' '2671' '2702') # Merge Requests List: ('579' '1441' '1880' '2671' '2702' '2751')
_merge_requests_to_use=('1441' '1880' '2671' '2702') _merge_requests_to_use=('1441' '1880' '2671' '2702' '2751')
## Disable building the DOCS package (Enabled if not set) ## Disable building the DOCS package (Enabled if not set)
# Remember to unset this variable when producing .SRCINFO # Remember to unset this variable when producing .SRCINFO
@ -32,7 +32,7 @@ else
pkgname=(mutter-performance mutter-performance-docs) pkgname=(mutter-performance mutter-performance-docs)
fi fi
pkgver=43.2 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" 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" url="https://gitlab.gnome.org/GNOME/mutter"
arch=(x86_64) arch=(x86_64)
@ -51,12 +51,14 @@ source=("$pkgname::git+https://gitlab.gnome.org/GNOME/mutter.git#commit=$_commit
'mr1441.patch' 'mr1441.patch'
'mr1880.patch' 'mr1880.patch'
'mr2702.patch' 'mr2702.patch'
'mr2671.patch') 'mr2671.patch'
'mr2751.patch')
sha256sums=('SKIP' sha256sums=('SKIP'
'd7a014965cbb90892ccbe65d0de49ddce50191dbd7521467d7f11c2f4825045c' 'd7a014965cbb90892ccbe65d0de49ddce50191dbd7521467d7f11c2f4825045c'
'65981409a5fc5ebfa95c7178f588cb2564f405cf55cbc7a315ecd4ac6c892b1c' '65981409a5fc5ebfa95c7178f588cb2564f405cf55cbc7a315ecd4ac6c892b1c'
'1b0647ab0d39db3b334e86c39dbb81b80030339c8d1a9cd43ff88003e966dec2' '1b0647ab0d39db3b334e86c39dbb81b80030339c8d1a9cd43ff88003e966dec2'
'dc0520fd8e9e9d4e76ebfe9e95f72f25bad18a149d04db9d0d35806f1903326c') '3737094e4d9c71b31a7e38922ad67d64e77a78524e492ecc9fc4172e129c9acc'
'dfa55caa40e970fca74e68a74d104db92438950b4fc954717963b857e4cd28f1')
pkgver() { pkgver() {
cd $pkgname cd $pkgname
@ -168,6 +170,16 @@ prepare() {
# NOTE: This changes mutter's behaviors, which can bring regressions when using some extensions. # NOTE: This changes mutter's behaviors, which can bring regressions when using some extensions.
pick_mr '2671' 'mr2671.patch' 'patch' 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() { build() {

View file

@ -1,8 +1,8 @@
Author: Robert Mader <robert.mader@posteo.de> Author: Robert Mader <robert.mader@posteo.de>
Source: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2671 Source: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2671
Editor: Mingi Sung <FiestaLake@protonmail.com> Editor: Mingi Sung <FiestaLake@protonmail.com>
Commit: 81caa2f08e8d95ceba405b414802fb740d906fdf Commit: a7c4ee8c8b38363e9173dec4eaeb7ba07b0212fe
Last Updated: 12/3/22 (Mutter 43.1+r24+g030e9b8b2-1) Last Updated: 12/12/22 (Mutter 43.2-2)
--- ---
Avoid some allocations, save some CPU cycles and make the code easier 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. 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 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 --- a/src/compositor/meta-surface-actor-wayland.c
+++ b/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) @@ -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, -meta_surface_actor_wayland_get_current_primary_view (MetaSurfaceActor *actor,
- ClutterStage *stage) - ClutterStage *stage)
+gboolean +gboolean
+meta_surface_actor_wayland_is_stage_view_current_primary_view (MetaSurfaceActor *actor, +meta_surface_actor_wayland_is_view_primary (MetaSurfaceActor *actor,
+ ClutterStageView *stage_view) + ClutterStageView *stage_view)
{ {
ClutterStageView *current_primary_view = NULL; ClutterStageView *current_primary_view = NULL;
float highest_refresh_rate = 0.f; float highest_refresh_rate = 0.f;
@ -94,11 +120,11 @@ index b58f328dc3272b9f418beda90c607b1759d5b345..1dcadde660e0a26075730667a3dd6648
+ } + }
+ +
+ l = clutter_actor_peek_stage_views (CLUTTER_ACTOR (actor)); + l = clutter_actor_peek_stage_views (CLUTTER_ACTOR (actor));
+ g_assert (l != NULL); + g_return_val_if_fail (l, FALSE);
+ +
+ if (!l->next) + 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); + return !meta_surface_actor_is_obscured (actor);
+ } + }
+ +
@ -136,7 +162,7 @@ index b58f328dc3272b9f418beda90c607b1759d5b345..1dcadde660e0a26075730667a3dd6648
static void static void
diff --git a/src/compositor/meta-surface-actor-wayland.h b/src/compositor/meta-surface-actor-wayland.h 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 --- a/src/compositor/meta-surface-actor-wayland.h
+++ b/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); @@ -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, -ClutterStageView * meta_surface_actor_wayland_get_current_primary_view (MetaSurfaceActor *actor,
- ClutterStage *stage); - ClutterStage *stage);
+gboolean meta_surface_actor_wayland_is_stage_view_current_primary_view (MetaSurfaceActor *actor, +gboolean meta_surface_actor_wayland_is_view_primary (MetaSurfaceActor *actor,
+ ClutterStageView *stage_view); + ClutterStageView *stage_view);
G_END_DECLS G_END_DECLS
diff --git a/src/wayland/meta-wayland-actor-surface.c b/src/wayland/meta-wayland-actor-surface.c 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 --- a/src/wayland/meta-wayland-actor-surface.c
+++ b/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 && priv->actor &&
!meta_surface_actor_is_obscured (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); 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 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 --- a/src/wayland/meta-wayland-presentation-time.c
+++ b/src/wayland/meta-wayland-presentation-time.c +++ b/src/wayland/meta-wayland-presentation-time.c
@@ -156,7 +156,6 @@ on_after_paint (ClutterStage *stage, @@ -156,7 +156,6 @@ on_after_paint (ClutterStage *stage,
@ -192,16 +218,16 @@ index fb99445eb70dd72d95e8e425a3230be8505b8b25..0025b62e1e6a0381f30b70e3ef2da817
- surface_primary_view = - surface_primary_view =
- meta_surface_actor_wayland_get_current_primary_view (actor, stage); - meta_surface_actor_wayland_get_current_primary_view (actor, stage);
- if (stage_view != surface_primary_view) - if (stage_view != surface_primary_view)
+ if (!meta_surface_actor_wayland_is_stage_view_current_primary_view (actor, + if (!meta_surface_actor_wayland_is_view_primary (actor,
+ stage_view)) + stage_view))
continue; continue;
if (!wl_list_empty (&surface->presentation_time.feedback_list)) if (!wl_list_empty (&surface->presentation_time.feedback_list))
diff --git a/src/wayland/meta-wayland.c b/src/wayland/meta-wayland.c 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 --- a/src/wayland/meta-wayland.c
+++ b/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; MetaWaylandSurface *surface = l->data;
MetaSurfaceActor *actor; MetaSurfaceActor *actor;
MetaWaylandActorSurface *actor_surface; MetaWaylandActorSurface *actor_surface;
@ -209,15 +235,15 @@ index 1db0838bb6da99dd25d7e6bb565a1ce5f723bfe3..df70daa624f6ec64cb9d0d9e4f795976
l = l->next; l = l->next;
@@ -237,9 +236,8 @@ on_after_update (ClutterStage *stage, @@ -232,9 +231,8 @@ on_after_update (ClutterStage *stage,
if (!actor) if (!actor)
continue; continue;
- surface_primary_view = - surface_primary_view =
- meta_surface_actor_wayland_get_current_primary_view (actor, stage); - meta_surface_actor_wayland_get_current_primary_view (actor, stage);
- if (stage_view != surface_primary_view) - if (stage_view != surface_primary_view)
+ if (!meta_surface_actor_wayland_is_stage_view_current_primary_view (actor, + if (!meta_surface_actor_wayland_is_view_primary (actor,
+ stage_view)) + stage_view))
continue; continue;
actor_surface = META_WAYLAND_ACTOR_SURFACE (surface->role); 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 |