Sync to gnome-3-36, cleanup
This commit is contained in:
parent
208dd2a459
commit
ee05e9d612
3 changed files with 9 additions and 147 deletions
7
.SRCINFO
7
.SRCINFO
|
@ -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 = 3.36.4+10+gef3dac706
|
||||
pkgrel = 2
|
||||
pkgver = 3.36.5+10+g84512cb1f
|
||||
pkgrel = 1
|
||||
url = https://gitlab.gnome.org/GNOME/mutter
|
||||
install = mutter.install
|
||||
arch = x86_64
|
||||
|
@ -34,8 +34,7 @@ pkgbase = mutter-performance
|
|||
provides = libmutter-6.so
|
||||
conflicts = mutter
|
||||
replaces = mutter-781835-workaround
|
||||
source = mutter-performance::git+https://gitlab.gnome.org/GNOME/mutter.git#commit=ef3dac70648196de8e291708eaa1cf68dc2eec28
|
||||
source = fix_clutter_actor_set_allocation_spam.patch
|
||||
source = mutter-performance::git+https://gitlab.gnome.org/GNOME/mutter.git#commit=84512cb1f36633d32418720e3608d01c6122ee26
|
||||
sha256sums = SKIP
|
||||
sha256sums = 9b2a5c4ab0e8c5e9a54fddc7461a85455055b175af9a7c89b0e16f30a939fa42
|
||||
|
||||
|
|
19
PKGBUILD
19
PKGBUILD
|
@ -8,14 +8,14 @@
|
|||
|
||||
### MERGE REQUESTS SELECTION
|
||||
|
||||
# Merge Requests List: ('429' '493' '579' '983' '798' '1003' '1267' '1360' '1359' '1369')
|
||||
_merge_requests_to_use=('1003' '1267' '1360' '1359' '1369') # safe pick
|
||||
# Merge Requests List: ('429' '493' '579' '983' '798' '1003' '1267' '1360' '1359')
|
||||
_merge_requests_to_use=('1003' '1267' '1360' '1359') # safe pick
|
||||
|
||||
### IMPORTANT: Do no edit below this line unless you know what you're doing
|
||||
|
||||
pkgname=mutter-performance
|
||||
pkgver=3.36.4+10+gef3dac706
|
||||
pkgrel=2
|
||||
pkgver=3.36.5+10+g84512cb1f
|
||||
pkgrel=1
|
||||
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)
|
||||
|
@ -30,9 +30,8 @@ conflicts=(mutter)
|
|||
replaces=(mutter-781835-workaround)
|
||||
groups=(gnome)
|
||||
install=mutter.install
|
||||
_commit=ef3dac70648196de8e291708eaa1cf68dc2eec28 # tags/3.36.4^10
|
||||
source=("$pkgname::git+https://gitlab.gnome.org/GNOME/mutter.git#commit=$_commit"
|
||||
"fix_clutter_actor_set_allocation_spam.patch")
|
||||
_commit=84512cb1f36633d32418720e3608d01c6122ee26 # tags/3.36.5^10
|
||||
source=("$pkgname::git+https://gitlab.gnome.org/GNOME/mutter.git#commit=$_commit")
|
||||
sha256sums=('SKIP'
|
||||
'9b2a5c4ab0e8c5e9a54fddc7461a85455055b175af9a7c89b0e16f30a939fa42')
|
||||
|
||||
|
@ -170,12 +169,6 @@ prepare() {
|
|||
# Comment:
|
||||
pick_mr "1359"
|
||||
|
||||
# Title: Fix wine copy & paste
|
||||
# URL: https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1369
|
||||
# Type: 3
|
||||
# Status: 2
|
||||
# Comment:
|
||||
pick_mr "1369"
|
||||
}
|
||||
|
||||
build() {
|
||||
|
|
|
@ -1,130 +0,0 @@
|
|||
diff --git a/clutter/clutter/clutter-stage.c b/clutter/clutter/clutter-stage.c
|
||||
index 82565c6b5..60544d8f3 100644
|
||||
--- a/clutter/clutter/clutter-stage.c
|
||||
+++ b/clutter/clutter/clutter-stage.c
|
||||
@@ -119,8 +119,7 @@ struct _ClutterStagePrivate
|
||||
|
||||
ClutterPlane current_clip_planes[4];
|
||||
|
||||
- GHashTable *pending_relayouts;
|
||||
- unsigned int pending_relayouts_version;
|
||||
+ GSList *pending_relayouts;
|
||||
GList *pending_queue_redraws;
|
||||
|
||||
gint sync_delay;
|
||||
@@ -154,6 +153,7 @@ struct _ClutterStagePrivate
|
||||
guint motion_events_enabled : 1;
|
||||
guint has_custom_perspective : 1;
|
||||
guint stage_was_relayout : 1;
|
||||
+ guint in_relayout : 1;
|
||||
};
|
||||
|
||||
enum
|
||||
@@ -1312,7 +1312,7 @@ _clutter_stage_needs_update (ClutterStage *stage)
|
||||
|
||||
priv = stage->priv;
|
||||
|
||||
- return priv->redraw_pending || g_hash_table_size (priv->pending_relayouts) > 0;
|
||||
+ return priv->redraw_pending || priv->pending_relayouts != NULL;
|
||||
}
|
||||
|
||||
void
|
||||
@@ -1321,11 +1321,11 @@ clutter_stage_queue_actor_relayout (ClutterStage *stage,
|
||||
{
|
||||
ClutterStagePrivate *priv = stage->priv;
|
||||
|
||||
- if (g_hash_table_size (priv->pending_relayouts) == 0)
|
||||
+ if (priv->pending_relayouts == NULL)
|
||||
_clutter_stage_schedule_update (stage);
|
||||
|
||||
- g_hash_table_add (priv->pending_relayouts, g_object_ref (actor));
|
||||
- priv->pending_relayouts_version++;
|
||||
+ priv->pending_relayouts = g_slist_prepend (priv->pending_relayouts,
|
||||
+ g_object_ref (actor));
|
||||
}
|
||||
|
||||
void
|
||||
@@ -1333,24 +1333,28 @@ _clutter_stage_maybe_relayout (ClutterActor *actor)
|
||||
{
|
||||
ClutterStage *stage = CLUTTER_STAGE (actor);
|
||||
ClutterStagePrivate *priv = stage->priv;
|
||||
- GHashTableIter iter;
|
||||
- gpointer key;
|
||||
+ g_autoptr (GSList) stolen_list = NULL;
|
||||
+ GSList *l;
|
||||
int count = 0;
|
||||
|
||||
/* No work to do? Avoid the extraneous debug log messages too. */
|
||||
- if (g_hash_table_size (priv->pending_relayouts) == 0)
|
||||
+ if (priv->pending_relayouts == NULL)
|
||||
return;
|
||||
|
||||
CLUTTER_NOTE (ACTOR, ">>> Recomputing layout");
|
||||
|
||||
- g_hash_table_iter_init (&iter, priv->pending_relayouts);
|
||||
- while (g_hash_table_iter_next (&iter, &key, NULL))
|
||||
+ if (priv->in_relayout)
|
||||
{
|
||||
- g_autoptr (ClutterActor) queued_actor = key;
|
||||
- unsigned int old_version;
|
||||
+ g_warning ("Tried to start a relayout while inside an allocation cycle");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ priv->in_relayout = TRUE;
|
||||
|
||||
- g_hash_table_iter_steal (&iter);
|
||||
- priv->pending_relayouts_version++;
|
||||
+ stolen_list = g_steal_pointer (&priv->pending_relayouts);
|
||||
+ for (l = stolen_list; l; l = l->next)
|
||||
+ {
|
||||
+ g_autoptr (ClutterActor) queued_actor = l->data;
|
||||
|
||||
if (CLUTTER_ACTOR_IN_RELAYOUT (queued_actor)) /* avoid reentrancy */
|
||||
continue;
|
||||
@@ -1366,21 +1370,14 @@ _clutter_stage_maybe_relayout (ClutterActor *actor)
|
||||
CLUTTER_NOTE (ACTOR, " Shallow relayout of actor %s",
|
||||
_clutter_actor_get_debug_name (queued_actor));
|
||||
|
||||
- CLUTTER_SET_PRIVATE_FLAGS (queued_actor, CLUTTER_IN_RELAYOUT);
|
||||
-
|
||||
- old_version = priv->pending_relayouts_version;
|
||||
clutter_actor_allocate_preferred_size (queued_actor,
|
||||
CLUTTER_ALLOCATION_NONE);
|
||||
|
||||
- CLUTTER_UNSET_PRIVATE_FLAGS (queued_actor, CLUTTER_IN_RELAYOUT);
|
||||
-
|
||||
count++;
|
||||
-
|
||||
- /* Prevent using an iterator that's been invalidated */
|
||||
- if (old_version != priv->pending_relayouts_version)
|
||||
- g_hash_table_iter_init (&iter, priv->pending_relayouts);
|
||||
}
|
||||
|
||||
+ priv->in_relayout = FALSE;
|
||||
+
|
||||
CLUTTER_NOTE (ACTOR, "<<< Completed recomputing layout of %d subtrees", count);
|
||||
|
||||
if (count)
|
||||
@@ -1958,7 +1955,9 @@ clutter_stage_dispose (GObject *object)
|
||||
(GDestroyNotify) free_queue_redraw_entry);
|
||||
priv->pending_queue_redraws = NULL;
|
||||
|
||||
- g_clear_pointer (&priv->pending_relayouts, g_hash_table_destroy);
|
||||
+ g_slist_free_full (priv->pending_relayouts,
|
||||
+ (GDestroyNotify) g_object_unref);
|
||||
+ priv->pending_relayouts = NULL;
|
||||
|
||||
/* this will release the reference on the stage */
|
||||
stage_manager = clutter_stage_manager_get_default ();
|
||||
@@ -2319,10 +2318,6 @@ clutter_stage_init (ClutterStage *self)
|
||||
clutter_actor_set_background_color (CLUTTER_ACTOR (self),
|
||||
&default_stage_color);
|
||||
|
||||
- priv->pending_relayouts = g_hash_table_new_full (NULL,
|
||||
- NULL,
|
||||
- g_object_unref,
|
||||
- NULL);
|
||||
clutter_stage_queue_actor_relayout (self, CLUTTER_ACTOR (self));
|
||||
|
||||
clutter_actor_set_reactive (CLUTTER_ACTOR (self), TRUE);
|
Loading…
Reference in a new issue