From 3d16222d0e07c6eec126b3dcf1da6e675b82a9d721797d0c2b818eb3e3846e4a Mon Sep 17 00:00:00 2001 From: Dominique Leuenberger Date: Fri, 15 Mar 2024 08:14:50 +0000 Subject: [PATCH] Accepting request 1158155 from home:AZhou:branches:GNOME:Factory - Add 0001-Revert-clutter-actor-Cache-stage-relative-instead-of.patch: This leads into partial update while switching VT (from TTY to GNOME) on X11 session with fbdev driver used ( glgo#GNOME/mutter#3302, bsc#1219546). OBS-URL: https://build.opensuse.org/request/show/1158155 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/mutter?expand=0&rev=495 --- ...ctor-Cache-stage-relative-instead-of.patch | 144 ++++++++++++++++++ mutter.changes | 8 + mutter.spec | 3 + 3 files changed, 155 insertions(+) create mode 100644 0001-Revert-clutter-actor-Cache-stage-relative-instead-of.patch diff --git a/0001-Revert-clutter-actor-Cache-stage-relative-instead-of.patch b/0001-Revert-clutter-actor-Cache-stage-relative-instead-of.patch new file mode 100644 index 0000000..9d3846f --- /dev/null +++ b/0001-Revert-clutter-actor-Cache-stage-relative-instead-of.patch @@ -0,0 +1,144 @@ +From d11feddbb29f0bf6de104d8d5c54cf18f3ca96da Mon Sep 17 00:00:00 2001 +From: Alynx Zhou +Date: Thu, 14 Mar 2024 19:20:57 +0800 +Subject: [PATCH] Revert "clutter/actor: Cache stage-relative instead of + absolute modelviews" + +This reverts commit 703bbe0e99dbb688352e0bff396e5cbf2c6af45b. +--- + clutter/clutter/clutter-actor.c | 67 ++++++++++----------------------- + 1 file changed, 20 insertions(+), 47 deletions(-) + +diff --git a/clutter/clutter/clutter-actor.c b/clutter/clutter/clutter-actor.c +index dd0d5ceb6..70dea5ca2 100644 +--- a/clutter/clutter/clutter-actor.c ++++ b/clutter/clutter/clutter-actor.c +@@ -612,7 +612,7 @@ struct _ClutterActorPrivate + /* the cached transformation matrix; see apply_transform() */ + graphene_matrix_t transform; + +- graphene_matrix_t stage_relative_modelview; ++ graphene_matrix_t absolute_modelview; + + float resource_scale; + +@@ -776,7 +776,7 @@ struct _ClutterActorPrivate + guint clear_stage_views_needs_stage_views_changed : 1; + guint needs_redraw : 1; + guint needs_finish_layout : 1; +- guint stage_relative_modelview_valid : 1; ++ guint absolute_modelview_valid : 1; + }; + + enum +@@ -2425,7 +2425,7 @@ absolute_geometry_changed (ClutterActor *actor) + { + actor->priv->needs_update_stage_views = TRUE; + actor->priv->needs_visible_paint_volume_update = TRUE; +- actor->priv->stage_relative_modelview_valid = FALSE; ++ actor->priv->absolute_modelview_valid = FALSE; + + actor->priv->needs_finish_layout = TRUE; + /* needs_finish_layout is already TRUE on the whole parent tree thanks +@@ -3047,9 +3047,8 @@ _clutter_actor_apply_relative_transformation_matrix (ClutterActor *self, + graphene_matrix_t *matrix) + { + ClutterActorPrivate *priv = self->priv; +- ClutterActor *stage = _clutter_actor_get_stage_internal (self); +- graphene_matrix_t ancestor_modelview; +- graphene_matrix_t inverse_ancestor_modelview; ++ graphene_matrix_t parent_modelview; ++ graphene_matrix_t inverse_parent_modelview; + + /* Note we terminate before ever calling stage->apply_transform() + * since that would conceptually be relative to the underlying +@@ -3058,63 +3057,37 @@ _clutter_actor_apply_relative_transformation_matrix (ClutterActor *self, + if (self == ancestor) + return; + +- if (!priv->stage_relative_modelview_valid) ++ if (!priv->absolute_modelview_valid) + { +- graphene_matrix_init_identity (&priv->stage_relative_modelview); ++ graphene_matrix_init_identity (&priv->absolute_modelview); + + if (priv->parent != NULL) + { + _clutter_actor_apply_relative_transformation_matrix (priv->parent, +- stage, +- &priv->stage_relative_modelview); ++ NULL, ++ &priv->absolute_modelview); + } + +- _clutter_actor_apply_modelview_transform (self, +- &priv->stage_relative_modelview); ++ _clutter_actor_apply_modelview_transform (self, &priv->absolute_modelview); + +- priv->stage_relative_modelview_valid = TRUE; ++ priv->absolute_modelview_valid = TRUE; + } + + if (ancestor == NULL) + { +- _clutter_actor_apply_modelview_transform (stage, matrix); +- graphene_matrix_multiply (&priv->stage_relative_modelview, matrix, matrix); +- return; +- } +- +- if (ancestor == stage) +- { +- graphene_matrix_multiply (&priv->stage_relative_modelview, matrix, matrix); +- return; +- } +- +- if (ancestor == priv->parent) +- { +- _clutter_actor_apply_modelview_transform (self, matrix); ++ graphene_matrix_multiply (&priv->absolute_modelview, matrix, matrix); + return; + } + +- graphene_matrix_init_identity (&ancestor_modelview); ++ graphene_matrix_init_identity (&parent_modelview); + _clutter_actor_apply_relative_transformation_matrix (ancestor, +- stage, +- &ancestor_modelview); +- +- if (graphene_matrix_near (&priv->stage_relative_modelview, +- &ancestor_modelview, +- FLT_EPSILON)) +- return; +- +- if (graphene_matrix_is_identity (&ancestor_modelview)) +- { +- graphene_matrix_multiply (&priv->stage_relative_modelview, matrix, matrix); +- return; +- } +- +- if (graphene_matrix_inverse (&ancestor_modelview, +- &inverse_ancestor_modelview)) ++ NULL, ++ &parent_modelview); ++ if (graphene_matrix_inverse (&parent_modelview, ++ &inverse_parent_modelview)) + { +- graphene_matrix_multiply (&inverse_ancestor_modelview, matrix, matrix); +- graphene_matrix_multiply (&priv->stage_relative_modelview, matrix, matrix); ++ graphene_matrix_multiply (&inverse_parent_modelview, matrix, matrix); ++ graphene_matrix_multiply (&priv->absolute_modelview, matrix, matrix); + return; + } + +@@ -7469,7 +7442,7 @@ clutter_actor_init (ClutterActor *self) + priv->enable_model_view_transform = TRUE; + + priv->transform_valid = FALSE; +- priv->stage_relative_modelview_valid = FALSE; ++ priv->absolute_modelview_valid = FALSE; + + /* the default is to stretch the content, to match the + * current behaviour of basically all actors. also, it's +-- +2.44.0 + diff --git a/mutter.changes b/mutter.changes index 98bb482..abb9157 100644 --- a/mutter.changes +++ b/mutter.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Fri Mar 15 07:09:11 UTC 2024 - Alynx Zhou + +- Add 0001-Revert-clutter-actor-Cache-stage-relative-instead-of.patch: + This leads into partial update while switching VT (from TTY to + GNOME) on X11 session with fbdev driver used ( + glgo#GNOME/mutter#3302, bsc#1219546). + ------------------------------------------------------------------- Thu Feb 1 09:28:37 UTC 2024 - Alynx Zhou diff --git a/mutter.spec b/mutter.spec index 2a4dd85..ea43ca6 100644 --- a/mutter.spec +++ b/mutter.spec @@ -38,6 +38,8 @@ Patch2: mutter-window-actor-Special-case-shaped-Java-windows.patch Patch3: mutter-fix-x11-restart.patch # PATCH-FIX-UPSTREAM mutter-fix-text-input-delete-surrounding.patch glgo#GNOME/mutter#2146 glgo#GNOME/mutter!2712 alynx.zhou@suse.com -- Fix delete_surrounding_text of text-input-v3 Patch4: mutter-fix-text-input-delete-surrounding.patch +# PATCH-FIX-OPENSUSE 0001-Revert-clutter-actor-Cache-stage-relative-instead-of.patch glgo#GNOME/mutter#3302 bsc#1219546 alynx.zhou@suse.com -- Fix partial update on VT switch +Patch5: 0001-Revert-clutter-actor-Cache-stage-relative-instead-of.patch ## SLE-only patches start at 1000 # PATCH-FEATURE-SLE mutter-SLE-bell.patch FATE#316042 bnc#889218 idonmez@suse.com -- make audible bell work out of the box. @@ -149,6 +151,7 @@ applications that want to make use of the mutter library. %patch -P 2 -p1 %patch -P 3 -p1 %patch -P 4 -p1 +%patch -P 5 -p1 %endif # SLE-only patches and translations. %if 0%{?sle_version}