Sync from SUSE:SLFO:Main mutter revision 51ea11ee8e3d6587d3ea9421ece3b7ad
This commit is contained in:
parent
723fa916f1
commit
ecc96d1ac0
144
0001-Revert-clutter-actor-Cache-stage-relative-instead-of.patch
Normal file
144
0001-Revert-clutter-actor-Cache-stage-relative-instead-of.patch
Normal file
@ -0,0 +1,144 @@
|
|||||||
|
From d11feddbb29f0bf6de104d8d5c54cf18f3ca96da Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alynx Zhou <alynx.zhou@gmail.com>
|
||||||
|
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
|
||||||
|
|
134
0001-Revert-clutter-stage-Avoid-queueing-stage-updates-wh.patch
Normal file
134
0001-Revert-clutter-stage-Avoid-queueing-stage-updates-wh.patch
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
From 3f3c8876e0494cf7af92ce9b216da70fd4c0c275 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Xiaoguang Wang <sun.wxg@gmail.com>
|
||||||
|
Date: Tue, 23 Apr 2024 12:28:45 +0800
|
||||||
|
Subject: [PATCH] Revert "clutter/stage: Avoid queueing stage updates when
|
||||||
|
they're already queued"
|
||||||
|
|
||||||
|
This reverts commit 261f516af4e635d4bb263bbbbb2f843f0cbe09de.
|
||||||
|
---
|
||||||
|
clutter/clutter/clutter-stage-private.h | 2 +-
|
||||||
|
clutter/clutter/clutter-stage-view.c | 2 +-
|
||||||
|
clutter/clutter/clutter-stage.c | 30 +++++++++----------------
|
||||||
|
3 files changed, 12 insertions(+), 22 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/clutter/clutter/clutter-stage-private.h b/clutter/clutter/clutter-stage-private.h
|
||||||
|
index c2460b327..f84fb10fe 100644
|
||||||
|
--- a/clutter/clutter/clutter-stage-private.h
|
||||||
|
+++ b/clutter/clutter/clutter-stage-private.h
|
||||||
|
@@ -61,7 +61,7 @@ void clutter_stage_emit_before_paint (ClutterStage
|
||||||
|
void clutter_stage_emit_after_paint (ClutterStage *stage,
|
||||||
|
ClutterStageView *view,
|
||||||
|
ClutterFrame *frame);
|
||||||
|
-void clutter_stage_after_update (ClutterStage *stage,
|
||||||
|
+void clutter_stage_emit_after_update (ClutterStage *stage,
|
||||||
|
ClutterStageView *view,
|
||||||
|
ClutterFrame *frame);
|
||||||
|
|
||||||
|
diff --git a/clutter/clutter/clutter-stage-view.c b/clutter/clutter/clutter-stage-view.c
|
||||||
|
index 168746dd4..b59d1cc00 100644
|
||||||
|
--- a/clutter/clutter/clutter-stage-view.c
|
||||||
|
+++ b/clutter/clutter/clutter-stage-view.c
|
||||||
|
@@ -1279,7 +1279,7 @@ handle_frame_clock_frame (ClutterFrameClock *frame_clock,
|
||||||
|
priv->needs_update_devices = FALSE;
|
||||||
|
|
||||||
|
_clutter_run_repaint_functions (CLUTTER_REPAINT_FLAGS_POST_PAINT);
|
||||||
|
- clutter_stage_after_update (stage, view, frame);
|
||||||
|
+ clutter_stage_emit_after_update (stage, view, frame);
|
||||||
|
|
||||||
|
return clutter_frame_get_result (frame);
|
||||||
|
}
|
||||||
|
diff --git a/clutter/clutter/clutter-stage.c b/clutter/clutter/clutter-stage.c
|
||||||
|
index 47405872b..f1d40426f 100644
|
||||||
|
--- a/clutter/clutter/clutter-stage.c
|
||||||
|
+++ b/clutter/clutter/clutter-stage.c
|
||||||
|
@@ -137,8 +137,6 @@ struct _ClutterStagePrivate
|
||||||
|
|
||||||
|
int update_freeze_count;
|
||||||
|
|
||||||
|
- gboolean update_scheduled;
|
||||||
|
-
|
||||||
|
GHashTable *pointer_devices;
|
||||||
|
GHashTable *touch_sequences;
|
||||||
|
|
||||||
|
@@ -528,15 +526,11 @@ clutter_stage_emit_after_paint (ClutterStage *stage,
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
-clutter_stage_after_update (ClutterStage *stage,
|
||||||
|
- ClutterStageView *view,
|
||||||
|
- ClutterFrame *frame)
|
||||||
|
+clutter_stage_emit_after_update (ClutterStage *stage,
|
||||||
|
+ ClutterStageView *view,
|
||||||
|
+ ClutterFrame *frame)
|
||||||
|
{
|
||||||
|
- ClutterStagePrivate *priv = stage->priv;
|
||||||
|
-
|
||||||
|
g_signal_emit (stage, stage_signals[AFTER_UPDATE], 0, view, frame);
|
||||||
|
-
|
||||||
|
- priv->update_scheduled = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
@@ -647,15 +641,19 @@ _clutter_stage_queue_event (ClutterStage *stage,
|
||||||
|
gboolean copy_event)
|
||||||
|
{
|
||||||
|
ClutterStagePrivate *priv;
|
||||||
|
+ gboolean first_event;
|
||||||
|
|
||||||
|
g_return_if_fail (CLUTTER_IS_STAGE (stage));
|
||||||
|
|
||||||
|
priv = stage->priv;
|
||||||
|
|
||||||
|
+ first_event = priv->event_queue->length == 0;
|
||||||
|
+
|
||||||
|
g_queue_push_tail (priv->event_queue,
|
||||||
|
copy_event ? clutter_event_copy (event) : event);
|
||||||
|
|
||||||
|
- clutter_stage_schedule_update (stage);
|
||||||
|
+ if (first_event)
|
||||||
|
+ clutter_stage_schedule_update (stage);
|
||||||
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
@@ -818,7 +816,8 @@ clutter_stage_queue_actor_relayout (ClutterStage *stage,
|
||||||
|
{
|
||||||
|
ClutterStagePrivate *priv = stage->priv;
|
||||||
|
|
||||||
|
- clutter_stage_schedule_update (stage);
|
||||||
|
+ if (priv->pending_relayouts == NULL)
|
||||||
|
+ clutter_stage_schedule_update (stage);
|
||||||
|
|
||||||
|
priv->pending_relayouts = g_slist_prepend (priv->pending_relayouts,
|
||||||
|
g_object_ref (actor));
|
||||||
|
@@ -2532,19 +2531,12 @@ _clutter_stage_get_default_window (void)
|
||||||
|
void
|
||||||
|
clutter_stage_schedule_update (ClutterStage *stage)
|
||||||
|
{
|
||||||
|
- ClutterStagePrivate *priv = stage->priv;
|
||||||
|
ClutterStageWindow *stage_window;
|
||||||
|
- gboolean first_event;
|
||||||
|
GList *l;
|
||||||
|
|
||||||
|
if (CLUTTER_ACTOR_IN_DESTRUCTION (stage))
|
||||||
|
return;
|
||||||
|
|
||||||
|
- first_event = priv->event_queue->length == 0;
|
||||||
|
-
|
||||||
|
- if (priv->update_scheduled && !first_event)
|
||||||
|
- return;
|
||||||
|
-
|
||||||
|
stage_window = _clutter_stage_get_window (stage);
|
||||||
|
if (stage_window == NULL)
|
||||||
|
return;
|
||||||
|
@@ -2555,8 +2547,6 @@ clutter_stage_schedule_update (ClutterStage *stage)
|
||||||
|
|
||||||
|
clutter_stage_view_schedule_update (view);
|
||||||
|
}
|
||||||
|
-
|
||||||
|
- priv->update_scheduled = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
ClutterPaintVolume *
|
||||||
|
--
|
||||||
|
2.44.0
|
||||||
|
|
6
_service
6
_service
@ -3,16 +3,16 @@
|
|||||||
<service name="obs_scm" mode="manual">
|
<service name="obs_scm" mode="manual">
|
||||||
<param name="scm">git</param>
|
<param name="scm">git</param>
|
||||||
<param name="url">https://gitlab.gnome.org/GNOME/mutter.git</param>
|
<param name="url">https://gitlab.gnome.org/GNOME/mutter.git</param>
|
||||||
<param name="revision">82bd40dcbcc3601da755678778f033bd9a30286d</param>
|
<param name="revision">refs/tags/45.3</param>
|
||||||
<param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
|
<param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
|
||||||
<param name="versionrewrite-pattern">(.*)\+0</param>
|
<param name="versionrewrite-pattern">(.*)\+0</param>
|
||||||
<param name="versionrewrite-replacement">\1</param>
|
<param name="versionrewrite-replacement">\1</param>
|
||||||
<param name="changesgenerate">enable</param>
|
<!-- <param name="changesgenerate">enable</param> -->
|
||||||
</service>
|
</service>
|
||||||
<service name="tar" mode="buildtime"/>
|
<service name="tar" mode="buildtime"/>
|
||||||
<service name="recompress" mode="buildtime">
|
<service name="recompress" mode="buildtime">
|
||||||
<param name="file">*.tar</param>
|
<param name="file">*.tar</param>
|
||||||
<param name="compression">xz</param>
|
<param name="compression">zst</param>
|
||||||
</service>
|
</service>
|
||||||
<service name="set_version" mode="manual" />
|
<service name="set_version" mode="manual" />
|
||||||
</services>
|
</services>
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
<servicedata>
|
|
||||||
<service name="tar_scm">
|
|
||||||
<param name="url">https://gitlab.gnome.org/GNOME/mutter.git</param>
|
|
||||||
<param name="changesrevision">82bd40dcbcc3601da755678778f033bd9a30286d</param></service></servicedata>
|
|
BIN
mutter-44.1+2.obscpio
(Stored with Git LFS)
BIN
mutter-44.1+2.obscpio
(Stored with Git LFS)
Binary file not shown.
BIN
mutter-45.3.obscpio
(Stored with Git LFS)
Normal file
BIN
mutter-45.3.obscpio
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -1,22 +0,0 @@
|
|||||||
From 1511039a96d158bcf4b731599ae3af3f98b9b166 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Chingkai <qkzhu@suse.com>
|
|
||||||
Date: Thu, 21 Feb 2019 12:39:52 +0800
|
|
||||||
Subject: [PATCH] monitor: Lower HIDPI_LIMIT to 144
|
|
||||||
|
|
||||||
---
|
|
||||||
src/backends/meta-monitor.c | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
Index: mutter-44.beta/src/backends/meta-monitor.c
|
|
||||||
===================================================================
|
|
||||||
--- mutter-44.beta.orig/src/backends/meta-monitor.c
|
|
||||||
+++ mutter-44.beta/src/backends/meta-monitor.c
|
|
||||||
@@ -1805,7 +1805,7 @@ meta_monitor_calculate_crtc_pos (MetaMon
|
|
||||||
}
|
|
||||||
|
|
||||||
/* The minimum resolution at which we turn on a window-scale of 2 */
|
|
||||||
-#define HIDPI_LIMIT 192
|
|
||||||
+#define HIDPI_LIMIT 144
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The minimum screen height at which we turn on a window-scale of 2;
|
|
@ -1,201 +0,0 @@
|
|||||||
Index: mutter-41.0/src/core/display.c
|
|
||||||
===================================================================
|
|
||||||
--- mutter-41.0.orig/src/core/display.c
|
|
||||||
+++ mutter-41.0/src/core/display.c
|
|
||||||
@@ -826,6 +826,8 @@ meta_display_new (MetaContext *context,
|
|
||||||
display->check_fullscreen_later = 0;
|
|
||||||
display->work_area_later = 0;
|
|
||||||
|
|
||||||
+ display->server_grab_count = 0;
|
|
||||||
+
|
|
||||||
display->mouse_mode = TRUE; /* Only relevant for mouse or sloppy focus */
|
|
||||||
display->allow_terminal_deactivation = TRUE; /* Only relevant for when a
|
|
||||||
terminal has the focus */
|
|
||||||
@@ -1141,6 +1143,50 @@ meta_display_close (MetaDisplay *display
|
|
||||||
the_display = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
+/* Grab/ungrab routines taken from fvwm.
|
|
||||||
+ * Calling this function will cause X to ignore all other clients until
|
|
||||||
+ * you ungrab. This may not be quite as bad as it sounds, yet there is
|
|
||||||
+ * agreement that avoiding server grabs except when they are clearly needed
|
|
||||||
+ * is a good thing.
|
|
||||||
+ *
|
|
||||||
+ * If you do use such grabs, please clearly explain the necessity for their
|
|
||||||
+ * usage in a comment. Try to keep their scope extremely limited. In
|
|
||||||
+ * particular, try to avoid emitting any signals or notifications while
|
|
||||||
+ * a grab is active (if the signal receiver tries to block on an X request
|
|
||||||
+ * from another client at this point, you will have a deadlock).
|
|
||||||
+ */
|
|
||||||
+void
|
|
||||||
+meta_display_grab (MetaDisplay *display)
|
|
||||||
+{
|
|
||||||
+ if (display->server_grab_count == 0)
|
|
||||||
+ {
|
|
||||||
+ XGrabServer (display->x11_display->xdisplay);
|
|
||||||
+ }
|
|
||||||
+ display->server_grab_count += 1;
|
|
||||||
+ meta_verbose ("Grabbing display, grab count now %d\n",
|
|
||||||
+ display->server_grab_count);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+void
|
|
||||||
+meta_display_ungrab (MetaDisplay *display)
|
|
||||||
+{
|
|
||||||
+ if (display->server_grab_count == 0)
|
|
||||||
+ meta_bug ("Ungrabbed non-grabbed server\n");
|
|
||||||
+
|
|
||||||
+ display->server_grab_count -= 1;
|
|
||||||
+ if (display->server_grab_count == 0)
|
|
||||||
+ {
|
|
||||||
+ /* FIXME we want to purge all pending "queued" stuff
|
|
||||||
+ * at this point, such as window hide/show
|
|
||||||
+ */
|
|
||||||
+ XUngrabServer (display->x11_display->xdisplay);
|
|
||||||
+ XFlush (display->x11_display->xdisplay);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ meta_verbose ("Ungrabbing display, grab count now %d\n",
|
|
||||||
+ display->server_grab_count);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/**
|
|
||||||
* meta_display_for_x_display:
|
|
||||||
* @xdisplay: An X display
|
|
||||||
Index: mutter-41.0/src/core/display-private.h
|
|
||||||
===================================================================
|
|
||||||
--- mutter-41.0.orig/src/core/display-private.h
|
|
||||||
+++ mutter-41.0/src/core/display-private.h
|
|
||||||
@@ -140,6 +140,8 @@ struct _MetaDisplay
|
|
||||||
GHashTable *stamps;
|
|
||||||
GHashTable *wayland_windows;
|
|
||||||
|
|
||||||
+ int server_grab_count;
|
|
||||||
+
|
|
||||||
/* serials of leave/unmap events that may
|
|
||||||
* correspond to an enter event we should
|
|
||||||
* ignore
|
|
||||||
@@ -258,6 +260,8 @@ struct _MetaDisplayClass
|
|
||||||
|
|
||||||
MetaDisplay * meta_display_new (MetaContext *context,
|
|
||||||
GError **error);
|
|
||||||
+void meta_display_grab (MetaDisplay *display);
|
|
||||||
+void meta_display_ungrab (MetaDisplay *display);
|
|
||||||
|
|
||||||
void meta_display_manage_all_xwindows (MetaDisplay *display);
|
|
||||||
void meta_display_unmanage_windows (MetaDisplay *display,
|
|
||||||
Index: mutter-41.0/src/core/keybindings.c
|
|
||||||
===================================================================
|
|
||||||
--- mutter-41.0.orig/src/core/keybindings.c
|
|
||||||
+++ mutter-41.0/src/core/keybindings.c
|
|
||||||
@@ -1253,6 +1253,9 @@ meta_display_grab_window_buttons (MetaDi
|
|
||||||
{
|
|
||||||
MetaKeyBindingManager *keys = &display->key_binding_manager;
|
|
||||||
|
|
||||||
+ if (display->server_grab_count > 0)
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
/* Grab Alt + button1 for moving window.
|
|
||||||
* Grab Alt + button2 for resizing window.
|
|
||||||
* Grab Alt + button3 for popping up window menu.
|
|
||||||
@@ -1289,6 +1292,9 @@ meta_display_ungrab_window_buttons (Meta
|
|
||||||
{
|
|
||||||
MetaKeyBindingManager *keys = &display->key_binding_manager;
|
|
||||||
|
|
||||||
+ if (display->server_grab_count > 0)
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
if (keys->window_grab_modifiers == 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
@@ -1319,6 +1325,9 @@ meta_display_grab_focus_window_button (M
|
|
||||||
{
|
|
||||||
MetaKeyBindingManager *keys = &display->key_binding_manager;
|
|
||||||
|
|
||||||
+ if (display->server_grab_count > 0)
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
/* Grab button 1 for activating unfocused windows */
|
|
||||||
meta_verbose ("Grabbing unfocused window buttons for %s", window->desc);
|
|
||||||
|
|
||||||
@@ -1343,6 +1352,9 @@ meta_display_ungrab_focus_window_button
|
|
||||||
{
|
|
||||||
MetaKeyBindingManager *keys = &display->key_binding_manager;
|
|
||||||
|
|
||||||
+ if (display->server_grab_count > 0)
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
meta_verbose ("Ungrabbing unfocused window buttons for %s", window->desc);
|
|
||||||
|
|
||||||
if (!window->have_focus_click_grab)
|
|
||||||
@@ -1588,6 +1600,10 @@ meta_window_grab_keys (MetaWindow *wind
|
|
||||||
|
|
||||||
if (meta_is_wayland_compositor ())
|
|
||||||
return;
|
|
||||||
+
|
|
||||||
+ if (display->server_grab_count > 0)
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
if (window->all_keys_grabbed)
|
|
||||||
return;
|
|
||||||
|
|
||||||
@@ -1627,6 +1643,9 @@ meta_window_ungrab_keys (MetaWindow *wi
|
|
||||||
MetaDisplay *display = window->display;
|
|
||||||
MetaKeyBindingManager *keys = &display->key_binding_manager;
|
|
||||||
|
|
||||||
+ if (display->server_grab_count > 0)
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
if (window->grab_on_frame &&
|
|
||||||
window->frame != NULL)
|
|
||||||
change_window_keygrabs (keys, window->frame->xwindow, FALSE);
|
|
||||||
Index: mutter-41.0/src/x11/meta-x11-display.c
|
|
||||||
===================================================================
|
|
||||||
--- mutter-41.0.orig/src/x11/meta-x11-display.c
|
|
||||||
+++ mutter-41.0/src/x11/meta-x11-display.c
|
|
||||||
@@ -1916,7 +1916,7 @@ meta_x11_display_set_input_focus_interna
|
|
||||||
* we know which is which by making two requests that the server will
|
|
||||||
* process at the same time.
|
|
||||||
*/
|
|
||||||
- XGrabServer (x11_display->xdisplay);
|
|
||||||
+ meta_display_grab(x11_display->display);
|
|
||||||
|
|
||||||
XSetInputFocus (x11_display->xdisplay,
|
|
||||||
xwindow,
|
|
||||||
@@ -1928,8 +1928,7 @@ meta_x11_display_set_input_focus_interna
|
|
||||||
x11_display->atom__MUTTER_FOCUS_SET,
|
|
||||||
XA_STRING, 8, PropModeAppend, NULL, 0);
|
|
||||||
|
|
||||||
- XUngrabServer (x11_display->xdisplay);
|
|
||||||
- XFlush (x11_display->xdisplay);
|
|
||||||
+ meta_display_ungrab(x11_display->display);
|
|
||||||
|
|
||||||
meta_x11_error_trap_pop (x11_display);
|
|
||||||
}
|
|
||||||
Index: mutter-41.0/src/x11/window-x11.c
|
|
||||||
===================================================================
|
|
||||||
--- mutter-41.0.orig/src/x11/window-x11.c
|
|
||||||
+++ mutter-41.0/src/x11/window-x11.c
|
|
||||||
@@ -522,6 +522,8 @@ meta_window_x11_manage (MetaWindow *wind
|
|
||||||
|
|
||||||
meta_icon_cache_init (&priv->icon_cache);
|
|
||||||
|
|
||||||
+ meta_display_grab (display);
|
|
||||||
+
|
|
||||||
meta_x11_display_register_x_window (display->x11_display,
|
|
||||||
&window->xwindow,
|
|
||||||
window);
|
|
||||||
@@ -582,6 +584,13 @@ meta_window_x11_manage (MetaWindow *wind
|
|
||||||
|
|
||||||
meta_window_x11_update_shape_region (window);
|
|
||||||
meta_window_x11_update_input_region (window);
|
|
||||||
+
|
|
||||||
+ meta_display_ungrab (display);
|
|
||||||
+
|
|
||||||
+ /* Perform operations prevented by grab */
|
|
||||||
+ if (window->frame)
|
|
||||||
+ meta_display_grab_window_buttons (display, window->frame->xwindow);
|
|
||||||
+ meta_window_grab_keys (window);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
@ -1,26 +0,0 @@
|
|||||||
Index: mutter-44.beta/src/x11/session.c
|
|
||||||
===================================================================
|
|
||||||
--- mutter-44.beta.orig/src/x11/session.c
|
|
||||||
+++ mutter-44.beta/src/x11/session.c
|
|
||||||
@@ -150,7 +150,8 @@ process_ice_messages (GIOChannel *chan
|
|
||||||
* being cleaned up, since it is owned by libSM.
|
|
||||||
*/
|
|
||||||
disconnect ();
|
|
||||||
- meta_context_terminate (ice_connection->context);
|
|
||||||
+ if (ice_connection->context != NULL)
|
|
||||||
+ meta_context_terminate (ice_connection->context);
|
|
||||||
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
Index: mutter-44.beta/src/tests/meson.build
|
|
||||||
===================================================================
|
|
||||||
--- mutter-44.beta.orig/src/tests/meson.build
|
|
||||||
+++ mutter-44.beta/src/tests/meson.build
|
|
||||||
@@ -43,6 +43,7 @@ tests_deps = [
|
|
||||||
]
|
|
||||||
|
|
||||||
libmutter_test = shared_library(libmutter_test_name,
|
|
||||||
+ mutter_enum_types,
|
|
||||||
mutter_test_sources,
|
|
||||||
gnu_symbol_visibility: 'hidden',
|
|
||||||
include_directories: tests_includes,
|
|
@ -1,29 +1,6 @@
|
|||||||
Index: mutter-44.rc/src/meson.build
|
diff -druN mutter-45.1.orig/src/backends/native/meta-default-modes-s390x.h mutter-45.1/src/backends/native/meta-default-modes-s390x.h
|
||||||
===================================================================
|
--- mutter-45.1.orig/src/backends/native/meta-default-modes-s390x.h 1970-01-01 01:00:00.000000000 +0100
|
||||||
--- mutter-44.rc.orig/src/meson.build
|
+++ mutter-45.1/src/backends/native/meta-default-modes-s390x.h 2024-01-23 16:35:55.791416596 +0100
|
||||||
+++ mutter-44.rc/src/meson.build
|
|
||||||
@@ -912,6 +912,7 @@ if have_profiler
|
|
||||||
endif
|
|
||||||
|
|
||||||
if have_native_backend
|
|
||||||
+ if host_machine.cpu_family() != 's390x'
|
|
||||||
cvt = find_program('cvt')
|
|
||||||
|
|
||||||
gen_default_modes = find_program('backends/native/gen-default-modes.py')
|
|
||||||
@@ -919,6 +920,9 @@ if have_native_backend
|
|
||||||
output: 'meta-default-modes.h',
|
|
||||||
command: [gen_default_modes, '@OUTPUT@']
|
|
||||||
)
|
|
||||||
+ else
|
|
||||||
+ default_modes_h = 'backends/native/meta-default-modes.h'
|
|
||||||
+ endif
|
|
||||||
mutter_built_sources += default_modes_h
|
|
||||||
|
|
||||||
dbus_interfaces += [
|
|
||||||
Index: mutter-44.rc/src/backends/native/meta-default-modes.h
|
|
||||||
===================================================================
|
|
||||||
--- /dev/null
|
|
||||||
+++ mutter-44.rc/src/backends/native/meta-default-modes.h
|
|
||||||
@@ -0,0 +1,57 @@
|
@@ -0,0 +1,57 @@
|
||||||
+/* Generated by gen-default-modes.py */
|
+/* Generated by gen-default-modes.py */
|
||||||
+
|
+
|
||||||
@ -82,3 +59,28 @@ Index: mutter-44.rc/src/backends/native/meta-default-modes.h
|
|||||||
+{ 813000, 2304, 2307, 2312, 2386, 0, 4096, 4440, 4888, 5680, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "2304x4096_60.00" },
|
+{ 813000, 2304, 2307, 2312, 2386, 0, 4096, 4440, 4888, 5680, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "2304x4096_60.00" },
|
||||||
+{ 1276500, 2880, 2883, 2888, 2982, 0, 5120, 5560, 6128, 7136, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "2880x5120_60.00" },
|
+{ 1276500, 2880, 2883, 2888, 2982, 0, 5120, 5560, 6128, 7136, 0, 0, DRM_MODE_FLAG_PHSYNC | DRM_MODE_FLAG_NVSYNC, DRM_MODE_TYPE_DEFAULT, "2880x5120_60.00" },
|
||||||
+};
|
+};
|
||||||
|
diff -druN mutter-45.1.orig/src/meson.build mutter-45.1/src/meson.build
|
||||||
|
--- mutter-45.1.orig/src/meson.build 2023-10-31 19:35:00.000000000 +0100
|
||||||
|
+++ mutter-45.1/src/meson.build 2024-01-23 18:07:33.487280694 +0100
|
||||||
|
@@ -958,6 +958,7 @@
|
||||||
|
endif
|
||||||
|
|
||||||
|
if have_native_backend
|
||||||
|
+ if host_machine.cpu_family() != 's390x'
|
||||||
|
cvt = find_program('cvt')
|
||||||
|
|
||||||
|
gen_default_modes = find_program('backends/native/gen-default-modes.py')
|
||||||
|
@@ -965,6 +966,13 @@
|
||||||
|
output: 'meta-default-modes.h',
|
||||||
|
command: [gen_default_modes, '@OUTPUT@']
|
||||||
|
)
|
||||||
|
+ else
|
||||||
|
+ default_modes_h = custom_target('meta-default-modes',
|
||||||
|
+ input: 'backends/native/meta-default-modes-s390x.h',
|
||||||
|
+ output: 'meta-default-modes.h',
|
||||||
|
+ command: ['cp', '@INPUT@', '@OUTPUT@']
|
||||||
|
+ )
|
||||||
|
+ endif
|
||||||
|
mutter_built_sources += default_modes_h
|
||||||
|
|
||||||
|
dbus_interfaces += [
|
||||||
|
182
mutter-fix-initial-suspended-state.patch
Normal file
182
mutter-fix-initial-suspended-state.patch
Normal file
@ -0,0 +1,182 @@
|
|||||||
|
diff --unified --recursive --text --new-file --color mutter-45.3.old/src/core/window.c mutter-45.3.new/src/core/window.c
|
||||||
|
--- mutter-45.3.old/src/core/window.c 2024-01-07 07:34:55.000000000 +0800
|
||||||
|
+++ mutter-45.3.new/src/core/window.c 2024-06-04 16:54:29.485138788 +0800
|
||||||
|
@@ -165,6 +165,8 @@
|
||||||
|
MetaTileMode mode);
|
||||||
|
static void update_edge_constraints (MetaWindow *window);
|
||||||
|
|
||||||
|
+static void set_hidden_suspended_state (MetaWindow *window);
|
||||||
|
+
|
||||||
|
static void initable_iface_init (GInitableIface *initable_iface);
|
||||||
|
|
||||||
|
typedef struct _MetaWindowPrivate
|
||||||
|
@@ -750,9 +752,6 @@
|
||||||
|
static void
|
||||||
|
meta_window_init (MetaWindow *window)
|
||||||
|
{
|
||||||
|
- MetaWindowPrivate *priv = meta_window_get_instance_private (window);
|
||||||
|
-
|
||||||
|
- priv->suspend_state = META_WINDOW_SUSPEND_STATE_SUSPENDED;
|
||||||
|
window->stamp = next_window_stamp++;
|
||||||
|
meta_prefs_add_listener (prefs_changed_callback, window);
|
||||||
|
window->is_alive = TRUE;
|
||||||
|
@@ -1026,6 +1025,7 @@
|
||||||
|
meta_window_constructed (GObject *object)
|
||||||
|
{
|
||||||
|
MetaWindow *window = META_WINDOW (object);
|
||||||
|
+ MetaWindowPrivate *priv = meta_window_get_instance_private (window);
|
||||||
|
MetaDisplay *display = window->display;
|
||||||
|
MetaContext *context = meta_display_get_context (display);
|
||||||
|
MetaBackend *backend = meta_context_get_backend (context);
|
||||||
|
@@ -1381,6 +1381,11 @@
|
||||||
|
!window->initially_iconic)
|
||||||
|
unminimize_window_and_all_transient_parents (window);
|
||||||
|
|
||||||
|
+ /* There is a slim chance we'll hit time out before a extremely slow client
|
||||||
|
+ * managed to become active, but unlikely enough. */
|
||||||
|
+ priv->suspend_state = META_WINDOW_SUSPEND_STATE_HIDDEN;
|
||||||
|
+ set_hidden_suspended_state (window);
|
||||||
|
+
|
||||||
|
window->constructing = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1716,9 +1721,9 @@
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
-gboolean
|
||||||
|
-meta_window_should_be_showing_on_workspace (MetaWindow *window,
|
||||||
|
- MetaWorkspace *workspace)
|
||||||
|
+
|
||||||
|
+static gboolean
|
||||||
|
+meta_window_is_showable (MetaWindow *window)
|
||||||
|
{
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
|
if (window->client_type == META_WINDOW_CLIENT_TYPE_WAYLAND &&
|
||||||
|
@@ -1730,12 +1735,72 @@
|
||||||
|
window->decorated && !window->frame)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
- /* Windows should be showing if they're located on the
|
||||||
|
- * workspace and they're showing on their own workspace. */
|
||||||
|
+ return TRUE;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * meta_window_should_show_on_workspace:
|
||||||
|
+ *
|
||||||
|
+ * Tells whether a window should be showing on the passed workspace, without
|
||||||
|
+ * taking into account whether it can immediately be shown. Whether it can be
|
||||||
|
+ * shown or not depends on what windowing system it was created from.
|
||||||
|
+ *
|
||||||
|
+ * Returns: %TRUE if the window should show.
|
||||||
|
+ */
|
||||||
|
+static gboolean
|
||||||
|
+meta_window_should_show_on_workspace (MetaWindow *window,
|
||||||
|
+ MetaWorkspace *workspace)
|
||||||
|
+{
|
||||||
|
return (meta_window_located_on_workspace (window, workspace) &&
|
||||||
|
meta_window_showing_on_its_workspace (window));
|
||||||
|
}
|
||||||
|
|
||||||
|
+/**
|
||||||
|
+ * meta_window_should_show:
|
||||||
|
+ *
|
||||||
|
+ * Tells whether a window should be showing on the current workspace, without
|
||||||
|
+ * taking into account whether it can immediately be shown. Whether it can be
|
||||||
|
+ * shown or not depends on what windowing system it was created from.
|
||||||
|
+ *
|
||||||
|
+ * Returns: %TRUE if the window should show.
|
||||||
|
+ */
|
||||||
|
+gboolean
|
||||||
|
+meta_window_should_show (MetaWindow *window)
|
||||||
|
+{
|
||||||
|
+ MetaWorkspaceManager *workspace_manager = window->display->workspace_manager;
|
||||||
|
+ MetaWorkspace *active_workspace = workspace_manager->active_workspace;
|
||||||
|
+
|
||||||
|
+ return meta_window_should_show_on_workspace (window, active_workspace);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * meta_window_should_be_showing_on_workspace:
|
||||||
|
+ *
|
||||||
|
+ * Tells whether a window should be showing on the passed workspace, while
|
||||||
|
+ * taking whether it can be immediately be shown. Whether it can be shown or
|
||||||
|
+ * not depends on what windowing system it was created from.
|
||||||
|
+ *
|
||||||
|
+ * Returns: %TRUE if the window should and can be shown.
|
||||||
|
+ */
|
||||||
|
+gboolean
|
||||||
|
+meta_window_should_be_showing_on_workspace (MetaWindow *window,
|
||||||
|
+ MetaWorkspace *workspace)
|
||||||
|
+{
|
||||||
|
+ if (!meta_window_is_showable (window))
|
||||||
|
+ return FALSE;
|
||||||
|
+
|
||||||
|
+ return meta_window_should_show_on_workspace (window, workspace);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * meta_window_should_be_showing:
|
||||||
|
+ *
|
||||||
|
+ * Tells whether a window should be showing on the current workspace, while
|
||||||
|
+ * taking whether it can be immediately be shown. Whether it can be shown or
|
||||||
|
+ * not depends on what windowing system it was created from.
|
||||||
|
+ *
|
||||||
|
+ * Returns: %TRUE if the window should and can be shown.
|
||||||
|
+ */
|
||||||
|
gboolean
|
||||||
|
meta_window_should_be_showing (MetaWindow *window)
|
||||||
|
{
|
||||||
|
@@ -2132,6 +2197,19 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
+set_hidden_suspended_state (MetaWindow *window)
|
||||||
|
+{
|
||||||
|
+ MetaWindowPrivate *priv = meta_window_get_instance_private (window);
|
||||||
|
+
|
||||||
|
+ priv->suspend_state = META_WINDOW_SUSPEND_STATE_HIDDEN;
|
||||||
|
+ g_return_if_fail (!priv->suspend_timoeut_id);
|
||||||
|
+ priv->suspend_timoeut_id =
|
||||||
|
+ g_timeout_add_seconds (SUSPEND_HIDDEN_TIMEOUT_S,
|
||||||
|
+ enter_suspend_state_cb,
|
||||||
|
+ window);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void
|
||||||
|
update_suspend_state (MetaWindow *window)
|
||||||
|
{
|
||||||
|
MetaWindowPrivate *priv = meta_window_get_instance_private (window);
|
||||||
|
@@ -2148,13 +2226,8 @@
|
||||||
|
}
|
||||||
|
else if (priv->suspend_state == META_WINDOW_SUSPEND_STATE_ACTIVE)
|
||||||
|
{
|
||||||
|
- priv->suspend_state = META_WINDOW_SUSPEND_STATE_HIDDEN;
|
||||||
|
+ set_hidden_suspended_state (window);
|
||||||
|
g_object_notify_by_pspec (G_OBJECT (window), obj_props[PROP_SUSPEND_STATE]);
|
||||||
|
- g_return_if_fail (!priv->suspend_timoeut_id);
|
||||||
|
- priv->suspend_timoeut_id =
|
||||||
|
- g_timeout_add_seconds (SUSPEND_HIDDEN_TIMEOUT_S,
|
||||||
|
- enter_suspend_state_cb,
|
||||||
|
- window);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --unified --recursive --text --new-file --color mutter-45.3.old/src/core/window-private.h mutter-45.3.new/src/core/window-private.h
|
||||||
|
--- mutter-45.3.old/src/core/window-private.h 2024-01-07 07:34:55.000000000 +0800
|
||||||
|
+++ mutter-45.3.new/src/core/window-private.h 2024-06-04 16:49:30.834738705 +0800
|
||||||
|
@@ -679,9 +679,12 @@
|
||||||
|
gboolean meta_window_should_be_showing_on_workspace (MetaWindow *window,
|
||||||
|
MetaWorkspace *workspace);
|
||||||
|
|
||||||
|
-/* Return whether the window should be currently mapped */
|
||||||
|
+META_EXPORT_TEST
|
||||||
|
gboolean meta_window_should_be_showing (MetaWindow *window);
|
||||||
|
|
||||||
|
+META_EXPORT_TEST
|
||||||
|
+gboolean meta_window_should_show (MetaWindow *window);
|
||||||
|
+
|
||||||
|
void meta_window_update_struts (MetaWindow *window);
|
||||||
|
|
||||||
|
/* gets position we need to set to stay in current position,
|
207
mutter-fix-text-input-delete-surrounding.patch
Normal file
207
mutter-fix-text-input-delete-surrounding.patch
Normal file
@ -0,0 +1,207 @@
|
|||||||
|
From 27bdf0c577a551254551fdaaf7870c5072707c69 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alynx Zhou <alynx.zhou@gmail.com>
|
||||||
|
Date: Fri, 25 Nov 2022 15:48:01 +0800
|
||||||
|
Subject: [PATCH 1/2] wayland/text-input: Use byte based offset in
|
||||||
|
delete_surrounding_text
|
||||||
|
|
||||||
|
ClutterInputFocus/GtkIMContext uses char based offset for
|
||||||
|
delete_surrounding, however, text_input_v3 uses byte based offset for
|
||||||
|
it. Currently only GTK with mutter can work correctly via text_input_v3
|
||||||
|
because they both forget to convert between char based offset and byte
|
||||||
|
based offset.
|
||||||
|
|
||||||
|
This commit fixes it in mutter by saving committed surrounding text in
|
||||||
|
MetaWaylandTextInput and converting char based offset to byte based
|
||||||
|
offset with the UTF-8 encoded surrounding text.
|
||||||
|
|
||||||
|
Fixes <https://gitlab.gnome.org/GNOME/mutter/-/issues/2146>.
|
||||||
|
|
||||||
|
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2712>
|
||||||
|
---
|
||||||
|
src/wayland/meta-wayland-text-input.c | 55 +++++++++++++++++++++++----
|
||||||
|
1 file changed, 47 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/wayland/meta-wayland-text-input.c b/src/wayland/meta-wayland-text-input.c
|
||||||
|
index b1ceb1a6bb5..2e694dc1eb8 100644
|
||||||
|
--- a/src/wayland/meta-wayland-text-input.c
|
||||||
|
+++ b/src/wayland/meta-wayland-text-input.c
|
||||||
|
@@ -58,6 +58,20 @@ struct _MetaWaylandTextInput
|
||||||
|
|
||||||
|
GHashTable *resource_serials;
|
||||||
|
|
||||||
|
+ /* This saves the uncommitted middle state of surrounding text from client
|
||||||
|
+ * between `set_surrounding_text` and `commit`, will be cleared after
|
||||||
|
+ * committed.
|
||||||
|
+ */
|
||||||
|
+ struct
|
||||||
|
+ {
|
||||||
|
+ char *text;
|
||||||
|
+ uint32_t cursor;
|
||||||
|
+ uint32_t anchor;
|
||||||
|
+ } pending_surrounding;
|
||||||
|
+
|
||||||
|
+ /* This is the actual committed surrounding text after `commit`, we need this
|
||||||
|
+ * to convert between char based offset and byte based offset.
|
||||||
|
+ */
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
char *text;
|
||||||
|
@@ -216,14 +230,32 @@ meta_wayland_text_input_focus_delete_surrounding (ClutterInputFocus *focus,
|
||||||
|
guint len)
|
||||||
|
{
|
||||||
|
MetaWaylandTextInput *text_input;
|
||||||
|
+ const char *start, *end;
|
||||||
|
+ const char *before, *after;
|
||||||
|
+ const char *cursor;
|
||||||
|
uint32_t before_length;
|
||||||
|
uint32_t after_length;
|
||||||
|
struct wl_resource *resource;
|
||||||
|
|
||||||
|
+ /* offset and len are counted by UTF-8 chars, but text_input_v3's lengths are
|
||||||
|
+ * counted by bytes, so we convert UTF-8 char offsets to pointers here, this
|
||||||
|
+ * needs the surrounding text
|
||||||
|
+ */
|
||||||
|
text_input = META_WAYLAND_TEXT_INPUT_FOCUS (focus)->text_input;
|
||||||
|
- before_length = ABS (MIN (offset, 0));
|
||||||
|
- after_length = MAX (0, offset + len);
|
||||||
|
- g_warn_if_fail (ABS (offset) <= len);
|
||||||
|
+ offset = MIN (offset, 0);
|
||||||
|
+
|
||||||
|
+ start = text_input->surrounding.text;
|
||||||
|
+ end = start + strlen (text_input->surrounding.text);
|
||||||
|
+ cursor = start + text_input->surrounding.cursor;
|
||||||
|
+
|
||||||
|
+ before = g_utf8_offset_to_pointer (cursor, offset);
|
||||||
|
+ g_assert (before >= start);
|
||||||
|
+
|
||||||
|
+ after = g_utf8_offset_to_pointer (cursor, offset + len);
|
||||||
|
+ g_assert (after <= end);
|
||||||
|
+
|
||||||
|
+ before_length = cursor - before;
|
||||||
|
+ after_length = after - cursor;
|
||||||
|
|
||||||
|
wl_resource_for_each (resource, &text_input->focus_resource_list)
|
||||||
|
{
|
||||||
|
@@ -468,10 +500,10 @@ text_input_set_surrounding_text (struct wl_client *client,
|
||||||
|
if (!client_matches_focus (text_input, client))
|
||||||
|
return;
|
||||||
|
|
||||||
|
- g_free (text_input->surrounding.text);
|
||||||
|
- text_input->surrounding.text = g_strdup (text);
|
||||||
|
- text_input->surrounding.cursor = cursor;
|
||||||
|
- text_input->surrounding.anchor = anchor;
|
||||||
|
+ g_free (text_input->pending_surrounding.text);
|
||||||
|
+ text_input->pending_surrounding.text = g_strdup (text);
|
||||||
|
+ text_input->pending_surrounding.cursor = cursor;
|
||||||
|
+ text_input->pending_surrounding.anchor = anchor;
|
||||||
|
text_input->pending_state |= META_WAYLAND_PENDING_STATE_SURROUNDING_TEXT;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -591,7 +623,7 @@ text_input_set_cursor_rectangle (struct wl_client *client,
|
||||||
|
static void
|
||||||
|
meta_wayland_text_input_reset (MetaWaylandTextInput *text_input)
|
||||||
|
{
|
||||||
|
- g_clear_pointer (&text_input->surrounding.text, g_free);
|
||||||
|
+ g_clear_pointer (&text_input->pending_surrounding.text, g_free);
|
||||||
|
text_input->content_type_hint = ZWP_TEXT_INPUT_V3_CONTENT_HINT_NONE;
|
||||||
|
text_input->content_type_purpose = ZWP_TEXT_INPUT_V3_CONTENT_PURPOSE_NORMAL;
|
||||||
|
text_input->text_change_cause = ZWP_TEXT_INPUT_V3_CHANGE_CAUSE_INPUT_METHOD;
|
||||||
|
@@ -651,6 +683,12 @@ text_input_commit_state (struct wl_client *client,
|
||||||
|
|
||||||
|
if (text_input->pending_state & META_WAYLAND_PENDING_STATE_SURROUNDING_TEXT)
|
||||||
|
{
|
||||||
|
+ /* Save the surrounding text for `delete_surrounding_text`. */
|
||||||
|
+ g_free (text_input->surrounding.text);
|
||||||
|
+ text_input->surrounding.text = g_steal_pointer (&text_input->pending_surrounding.text);
|
||||||
|
+ text_input->surrounding.cursor = text_input->pending_surrounding.cursor;
|
||||||
|
+ text_input->surrounding.anchor = text_input->pending_surrounding.anchor;
|
||||||
|
+ /* Pass the surrounding text to Clutter to handle it with input method. */
|
||||||
|
clutter_input_focus_set_surrounding (text_input->input_focus,
|
||||||
|
text_input->surrounding.text,
|
||||||
|
text_input->surrounding.cursor,
|
||||||
|
@@ -720,6 +758,7 @@ meta_wayland_text_input_destroy (MetaWaylandTextInput *text_input)
|
||||||
|
g_object_unref (text_input->input_focus);
|
||||||
|
g_hash_table_destroy (text_input->resource_serials);
|
||||||
|
g_clear_pointer (&text_input->preedit.string, g_free);
|
||||||
|
+ g_clear_pointer (&text_input->pending_surrounding.text, g_free);
|
||||||
|
g_clear_pointer (&text_input->surrounding.text, g_free);
|
||||||
|
g_free (text_input);
|
||||||
|
}
|
||||||
|
--
|
||||||
|
GitLab
|
||||||
|
|
||||||
|
|
||||||
|
From 33088d59db742cf802977a9d8ec8b4ea3ca79ea0 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alynx Zhou <alynx.zhou@gmail.com>
|
||||||
|
Date: Mon, 23 Oct 2023 14:32:21 +0800
|
||||||
|
Subject: [PATCH 2/2] wayland/text-input: Pass char based offset to
|
||||||
|
ClutterInputFocus
|
||||||
|
|
||||||
|
Wayland's text-input-v3 uses byte based offset for cursor and anchor of
|
||||||
|
surrounding text, but Clutter needs char based offset here. This commit
|
||||||
|
converts byte based offset to char based offset before passing them to
|
||||||
|
ClutterInputFocus.
|
||||||
|
|
||||||
|
Fixes <https://gitlab.gnome.org/GNOME/mutter/-/issues/3102>.
|
||||||
|
|
||||||
|
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2712>
|
||||||
|
---
|
||||||
|
src/wayland/meta-wayland-text-input.c | 24 +++++++++++++++++++-----
|
||||||
|
1 file changed, 19 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/wayland/meta-wayland-text-input.c b/src/wayland/meta-wayland-text-input.c
|
||||||
|
index 2e694dc1eb8..c8f50847a88 100644
|
||||||
|
--- a/src/wayland/meta-wayland-text-input.c
|
||||||
|
+++ b/src/wayland/meta-wayland-text-input.c
|
||||||
|
@@ -122,12 +122,18 @@ static void
|
||||||
|
meta_wayland_text_input_focus_request_surrounding (ClutterInputFocus *focus)
|
||||||
|
{
|
||||||
|
MetaWaylandTextInput *text_input;
|
||||||
|
+ long cursor, anchor;
|
||||||
|
|
||||||
|
+ /* Clutter uses char offsets but text-input-v3 uses byte offsets. */
|
||||||
|
text_input = META_WAYLAND_TEXT_INPUT_FOCUS (focus)->text_input;
|
||||||
|
+ cursor = g_utf8_strlen (text_input->surrounding.text,
|
||||||
|
+ text_input->surrounding.cursor);
|
||||||
|
+ anchor = g_utf8_strlen (text_input->surrounding.text,
|
||||||
|
+ text_input->surrounding.anchor);
|
||||||
|
clutter_input_focus_set_surrounding (focus,
|
||||||
|
- text_input->surrounding.text,
|
||||||
|
- text_input->surrounding.cursor,
|
||||||
|
- text_input->surrounding.anchor);
|
||||||
|
+ text_input->surrounding.text,
|
||||||
|
+ cursor,
|
||||||
|
+ anchor);
|
||||||
|
}
|
||||||
|
|
||||||
|
static uint32_t
|
||||||
|
@@ -683,16 +689,24 @@ text_input_commit_state (struct wl_client *client,
|
||||||
|
|
||||||
|
if (text_input->pending_state & META_WAYLAND_PENDING_STATE_SURROUNDING_TEXT)
|
||||||
|
{
|
||||||
|
+ long cursor, anchor;
|
||||||
|
+
|
||||||
|
/* Save the surrounding text for `delete_surrounding_text`. */
|
||||||
|
g_free (text_input->surrounding.text);
|
||||||
|
text_input->surrounding.text = g_steal_pointer (&text_input->pending_surrounding.text);
|
||||||
|
text_input->surrounding.cursor = text_input->pending_surrounding.cursor;
|
||||||
|
text_input->surrounding.anchor = text_input->pending_surrounding.anchor;
|
||||||
|
+
|
||||||
|
/* Pass the surrounding text to Clutter to handle it with input method. */
|
||||||
|
+ /* Clutter uses char offsets but text-input-v3 uses byte offsets. */
|
||||||
|
+ cursor = g_utf8_strlen (text_input->surrounding.text,
|
||||||
|
+ text_input->surrounding.cursor);
|
||||||
|
+ anchor = g_utf8_strlen (text_input->surrounding.text,
|
||||||
|
+ text_input->surrounding.anchor);
|
||||||
|
clutter_input_focus_set_surrounding (text_input->input_focus,
|
||||||
|
text_input->surrounding.text,
|
||||||
|
- text_input->surrounding.cursor,
|
||||||
|
- text_input->surrounding.anchor);
|
||||||
|
+ cursor,
|
||||||
|
+ anchor);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (text_input->pending_state & META_WAYLAND_PENDING_STATE_INPUT_RECT)
|
||||||
|
--
|
||||||
|
GitLab
|
||||||
|
|
251
mutter-fix-x11-restart.patch
Normal file
251
mutter-fix-x11-restart.patch
Normal file
@ -0,0 +1,251 @@
|
|||||||
|
From b7a1159a1ecd08b5e6aa1279fea84accf846b411 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||||
|
Date: Fri, 20 Oct 2023 15:44:29 +0800
|
||||||
|
Subject: [PATCH 1/4] x11-display: Make subwindow redirection call mode
|
||||||
|
specific
|
||||||
|
|
||||||
|
This means that for X11 sessions we'll do it before any windows are
|
||||||
|
mapped, and before any plugin implementation is started. Doing it before
|
||||||
|
a plugin is started is important, because things that the plugin does
|
||||||
|
during startup can have consequences on how compositing on Xorg works.
|
||||||
|
|
||||||
|
For the Xwayland case, we'll do it relatively in the setup phase. It
|
||||||
|
appears to have been harmless to do it later in the post-opened signal,
|
||||||
|
but there is no harm in doing it as one of the earlier steps.
|
||||||
|
|
||||||
|
Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3089
|
||||||
|
---
|
||||||
|
src/compositor/meta-compositor-x11.c | 2 ++
|
||||||
|
src/wayland/meta-xwayland.c | 1 +
|
||||||
|
src/x11/meta-x11-display.c | 1 -
|
||||||
|
3 files changed, 3 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/compositor/meta-compositor-x11.c b/src/compositor/meta-compositor-x11.c
|
||||||
|
index 1ad3327ddf6..ce7bc1945ce 100644
|
||||||
|
--- a/src/compositor/meta-compositor-x11.c
|
||||||
|
+++ b/src/compositor/meta-compositor-x11.c
|
||||||
|
@@ -188,6 +188,8 @@ meta_compositor_x11_manage (MetaCompositor *compositor,
|
||||||
|
|
||||||
|
compositor_x11->have_x11_sync_object = meta_sync_ring_init (xdisplay);
|
||||||
|
|
||||||
|
+ meta_x11_display_redirect_windows (x11_display, display);
|
||||||
|
+
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/src/wayland/meta-xwayland.c b/src/wayland/meta-xwayland.c
|
||||||
|
index e95ca564010..83f2fcb25d9 100644
|
||||||
|
--- a/src/wayland/meta-xwayland.c
|
||||||
|
+++ b/src/wayland/meta-xwayland.c
|
||||||
|
@@ -1170,6 +1170,7 @@ on_x11_display_setup (MetaDisplay *display,
|
||||||
|
{
|
||||||
|
MetaX11Display *x11_display = meta_display_get_x11_display (display);
|
||||||
|
|
||||||
|
+ meta_x11_display_redirect_windows (x11_display, display);
|
||||||
|
meta_xwayland_init_dnd (x11_display);
|
||||||
|
meta_xwayland_init_xrandr (manager, x11_display);
|
||||||
|
}
|
||||||
|
diff --git a/src/x11/meta-x11-display.c b/src/x11/meta-x11-display.c
|
||||||
|
index 4e98203dd25..c634a71fb2a 100644
|
||||||
|
--- a/src/x11/meta-x11-display.c
|
||||||
|
+++ b/src/x11/meta-x11-display.c
|
||||||
|
@@ -301,7 +301,6 @@ on_x11_display_opened (MetaX11Display *x11_display,
|
||||||
|
MetaDisplay *display)
|
||||||
|
{
|
||||||
|
meta_display_manage_all_xwindows (display);
|
||||||
|
- meta_x11_display_redirect_windows (x11_display, display);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
--
|
||||||
|
GitLab
|
||||||
|
|
||||||
|
|
||||||
|
From 77fc07943c3171a5e7a047ca34af46feeca347c2 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||||
|
Date: Fri, 20 Oct 2023 17:03:31 +0800
|
||||||
|
Subject: [PATCH 2/4] display: Move X11 initial focus handling to
|
||||||
|
MetaX11Display
|
||||||
|
|
||||||
|
It's X11 specific, so put it in the X11 display manager object.
|
||||||
|
---
|
||||||
|
src/core/display.c | 34 ----------------------------------
|
||||||
|
src/x11/meta-x11-display.c | 25 +++++++++++++++++++++++++
|
||||||
|
2 files changed, 25 insertions(+), 34 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/core/display.c b/src/core/display.c
|
||||||
|
index 0a191c0fbca..b16e50e21de 100644
|
||||||
|
--- a/src/core/display.c
|
||||||
|
+++ b/src/core/display.c
|
||||||
|
@@ -930,9 +930,6 @@ meta_display_new (MetaContext *context,
|
||||||
|
MetaDisplay *display;
|
||||||
|
MetaDisplayPrivate *priv;
|
||||||
|
guint32 timestamp;
|
||||||
|
-#ifdef HAVE_X11_CLIENT
|
||||||
|
- Window old_active_xwindow = None;
|
||||||
|
-#endif
|
||||||
|
MetaMonitorManager *monitor_manager;
|
||||||
|
MetaSettings *settings;
|
||||||
|
MetaInputCapture *input_capture;
|
||||||
|
@@ -1048,14 +1045,6 @@ meta_display_new (MetaContext *context,
|
||||||
|
display->last_focus_time = timestamp;
|
||||||
|
display->last_user_time = timestamp;
|
||||||
|
|
||||||
|
-#ifdef HAVE_X11
|
||||||
|
- if (!meta_is_wayland_compositor ())
|
||||||
|
- meta_prop_get_window (display->x11_display,
|
||||||
|
- display->x11_display->xroot,
|
||||||
|
- display->x11_display->atom__NET_ACTIVE_WINDOW,
|
||||||
|
- &old_active_xwindow);
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
if (!meta_compositor_manage (display->compositor, error))
|
||||||
|
{
|
||||||
|
g_object_unref (display);
|
||||||
|
@@ -1076,30 +1065,7 @@ meta_display_new (MetaContext *context,
|
||||||
|
g_signal_connect (display->gesture_tracker, "state-changed",
|
||||||
|
G_CALLBACK (gesture_tracker_state_changed), display);
|
||||||
|
|
||||||
|
- /* We know that if mutter is running as a Wayland compositor,
|
||||||
|
- * we start out with no windows.
|
||||||
|
- */
|
||||||
|
-#ifdef HAVE_X11_CLIENT
|
||||||
|
- if (!meta_is_wayland_compositor ())
|
||||||
|
- meta_display_manage_all_xwindows (display);
|
||||||
|
-
|
||||||
|
- if (old_active_xwindow != None)
|
||||||
|
- {
|
||||||
|
- MetaWindow *old_active_window;
|
||||||
|
- old_active_window = meta_x11_display_lookup_x_window (display->x11_display,
|
||||||
|
- old_active_xwindow);
|
||||||
|
- if (old_active_window)
|
||||||
|
- meta_window_focus (old_active_window, timestamp);
|
||||||
|
- else
|
||||||
|
- meta_display_unset_input_focus (display, timestamp);
|
||||||
|
- }
|
||||||
|
- else
|
||||||
|
- {
|
||||||
|
- meta_display_unset_input_focus (display, timestamp);
|
||||||
|
- }
|
||||||
|
-#else
|
||||||
|
meta_display_unset_input_focus (display, timestamp);
|
||||||
|
-#endif
|
||||||
|
|
||||||
|
g_signal_connect (stage, "notify::is-grabbed",
|
||||||
|
G_CALLBACK (on_is_grabbed_changed), display);
|
||||||
|
diff --git a/src/x11/meta-x11-display.c b/src/x11/meta-x11-display.c
|
||||||
|
index c634a71fb2a..599968a363b 100644
|
||||||
|
--- a/src/x11/meta-x11-display.c
|
||||||
|
+++ b/src/x11/meta-x11-display.c
|
||||||
|
@@ -300,7 +300,32 @@ static void
|
||||||
|
on_x11_display_opened (MetaX11Display *x11_display,
|
||||||
|
MetaDisplay *display)
|
||||||
|
{
|
||||||
|
+ Window old_active_xwindow = None;
|
||||||
|
+
|
||||||
|
+ if (!meta_is_wayland_compositor ())
|
||||||
|
+ {
|
||||||
|
+ meta_prop_get_window (display->x11_display,
|
||||||
|
+ display->x11_display->xroot,
|
||||||
|
+ display->x11_display->atom__NET_ACTIVE_WINDOW,
|
||||||
|
+ &old_active_xwindow);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
meta_display_manage_all_xwindows (display);
|
||||||
|
+
|
||||||
|
+ if (old_active_xwindow != None)
|
||||||
|
+ {
|
||||||
|
+ MetaWindow *old_active_window;
|
||||||
|
+
|
||||||
|
+ old_active_window = meta_x11_display_lookup_x_window (x11_display,
|
||||||
|
+ old_active_xwindow);
|
||||||
|
+ if (old_active_window)
|
||||||
|
+ {
|
||||||
|
+ uint32_t timestamp;
|
||||||
|
+
|
||||||
|
+ timestamp = display->x11_display->timestamp;
|
||||||
|
+ meta_window_focus (old_active_window, timestamp);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
--
|
||||||
|
GitLab
|
||||||
|
|
||||||
|
|
||||||
|
From 668eb0d198dba58c7833b09926dce2f043889155 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||||
|
Date: Tue, 17 Oct 2023 15:46:00 +0800
|
||||||
|
Subject: [PATCH 3/4] tests/x11: Fix replace test to catch the second instance
|
||||||
|
failing
|
||||||
|
|
||||||
|
The test never noticed that the second instance never actually managed
|
||||||
|
to load; it was looping a multi second retry session trying to redirect
|
||||||
|
windows, meaning it failed to catch https://gitlab.gnome.org/GNOME/mutter/-/issues/3089.
|
||||||
|
|
||||||
|
Fix the test so that it always waits for mutter to finish loading
|
||||||
|
successfully, just like it waits fro the first.
|
||||||
|
---
|
||||||
|
src/tests/x11-test.sh | 3 +++
|
||||||
|
1 file changed, 3 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/src/tests/x11-test.sh b/src/tests/x11-test.sh
|
||||||
|
index 59e460fc336..d95b2460f6e 100755
|
||||||
|
--- a/src/tests/x11-test.sh
|
||||||
|
+++ b/src/tests/x11-test.sh
|
||||||
|
@@ -34,6 +34,9 @@ echo \# Launched with pid $MUTTER2_PID
|
||||||
|
MUTTER2_PID=$!
|
||||||
|
wait $MUTTER1_PID
|
||||||
|
|
||||||
|
+echo \# Waiting for the second mutter to finish loading
|
||||||
|
+gdbus wait --session org.gnome.Mutter.IdleMonitor
|
||||||
|
+
|
||||||
|
sleep 2
|
||||||
|
|
||||||
|
echo \# Terminating clients > /dev/stderr
|
||||||
|
--
|
||||||
|
GitLab
|
||||||
|
|
||||||
|
|
||||||
|
From 8e6f18fcaf63968b0a75bf65da0c00473d71acb3 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Jonas=20=C3=85dahl?= <jadahl@gmail.com>
|
||||||
|
Date: Mon, 23 Oct 2023 14:47:33 +0800
|
||||||
|
Subject: [PATCH 4/4] display: Rename mandatory X11 initialization function
|
||||||
|
|
||||||
|
Simply to make it clear that the renamed function is specific to a
|
||||||
|
particular X11 initialization mode (mandatory Xwayland), put that in the
|
||||||
|
name, so that it's easier to understand when this function is relevant.
|
||||||
|
---
|
||||||
|
src/core/display.c | 8 ++++----
|
||||||
|
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/core/display.c b/src/core/display.c
|
||||||
|
index b16e50e21de..f851f1be372 100644
|
||||||
|
--- a/src/core/display.c
|
||||||
|
+++ b/src/core/display.c
|
||||||
|
@@ -897,9 +897,9 @@ meta_display_init_x11 (MetaDisplay *display,
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
-on_x11_initialized (MetaDisplay *display,
|
||||||
|
- GAsyncResult *result,
|
||||||
|
- gpointer user_data)
|
||||||
|
+on_mandatory_x11_initialized (MetaDisplay *display,
|
||||||
|
+ GAsyncResult *result,
|
||||||
|
+ gpointer user_data)
|
||||||
|
{
|
||||||
|
g_autoptr (GError) error = NULL;
|
||||||
|
|
||||||
|
@@ -1018,7 +1018,7 @@ meta_display_new (MetaContext *context,
|
||||||
|
if (x11_display_policy == META_X11_DISPLAY_POLICY_MANDATORY)
|
||||||
|
{
|
||||||
|
meta_display_init_x11 (display, NULL,
|
||||||
|
- (GAsyncReadyCallback) on_x11_initialized,
|
||||||
|
+ (GAsyncReadyCallback) on_mandatory_x11_initialized,
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
#endif /* HAVE_XWAYLAND */
|
||||||
|
--
|
||||||
|
GitLab
|
||||||
|
|
1095
mutter-implement-text-input-v1.patch
Normal file
1095
mutter-implement-text-input-v1.patch
Normal file
File diff suppressed because it is too large
Load Diff
397
mutter.changes
397
mutter.changes
@ -1,3 +1,400 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Jun 4 08:57:08 UTC 2024 - Alynx Zhou <alynx.zhou@suse.com>
|
||||||
|
|
||||||
|
- Add mutter-fix-initial-suspended-state.patch: With Qt 6.7 some
|
||||||
|
apps cannot shown on launch, this patch fixes the initial
|
||||||
|
suspended state to make those windows visible
|
||||||
|
(glgo#GNOME/mutter!3475, bsc#1223393).
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue May 21 08:26:15 UTC 2024 - Alynx Zhou <alynx.zhou@suse.com>
|
||||||
|
|
||||||
|
- Add mutter-implement-text-input-v1.patch: This allows input
|
||||||
|
method to work in Chromium/Electron-based apps with Wayland Ozone
|
||||||
|
platform, which only has text-input-v1 support
|
||||||
|
(glgo#GNOME/mutter!3751, bsc#1219505).
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Sun Apr 28 01:22:43 UTC 2024 - Xiaoguang Wang <xiaoguang.wang@suse.com>
|
||||||
|
|
||||||
|
- Add 0001-Revert-clutter-stage-Avoid-queueing-stage-updates-wh.patch:
|
||||||
|
Reverting commit 261f516a to fix black screen on Xorg when logging
|
||||||
|
in or logging out (glgo#GNOME/mutter#3452 bsc#1222612).
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Mar 15 07:09:11 UTC 2024 - Alynx Zhou <alynx.zhou@suse.com>
|
||||||
|
|
||||||
|
- 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 <alynx.zhou@suse.com>
|
||||||
|
|
||||||
|
- Drop mutter-SLE-bsc984738-grab-display.patch: It blocks non-CSD
|
||||||
|
apps with GNOME 45, and the latest LTS Oracle Installer works
|
||||||
|
fine without it, the original bug is not a problem (bsc#1218935).
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Jan 24 13:54:15 UTC 2024 - Eugenio Paolantonio <eugenio.paolantonio@suse.com>
|
||||||
|
|
||||||
|
- mutter-SLE-bsc984738-grab-display.patch:
|
||||||
|
* Temporary disable this SLE-only patch as it makes mutter
|
||||||
|
45 lock-up on non-CSD apps (bsc#1218935)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Jan 23 17:35:28 UTC 2024 - Eugenio Paolantonio <eugenio.paolantonio@suse.com>
|
||||||
|
|
||||||
|
- Rebase mutter-disable-cvt-s390x.patch for mutter 45.x.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Jan 10 08:53:06 UTC 2024 - Dominique Leuenberger <dimstar@opensuse.org>
|
||||||
|
|
||||||
|
- Update to version 45.3:
|
||||||
|
+ Fix handling of relative mode for tablets.
|
||||||
|
+ Fix forcing EGLStream with NVIDIA proprietary driver.
|
||||||
|
+ Sync geometry only when window is mapped.
|
||||||
|
+ Improve repick due to transform changes.
|
||||||
|
+ wayland/client: Add make_desktop() method.
|
||||||
|
+ Fix occasional artifacts at top of X11 fullscreen windows.
|
||||||
|
+ background: Fix background color around image.
|
||||||
|
+ Fixed crashes.
|
||||||
|
+ Plugged leaks.
|
||||||
|
+ Misc. bug fixes and cleanups.
|
||||||
|
+ Updated translations.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Dec 21 08:23:54 UTC 2023 - Alynx Zhou <alynx.zhou@suse.com>
|
||||||
|
|
||||||
|
- Add mutter-fix-text-input-delete-surrounding.patch: text-input-v3
|
||||||
|
requrires byte based offset but Clutter uses char based offset
|
||||||
|
for delete_surrounding_text, fix it by converting before passing
|
||||||
|
arguments (glgo#GNOME/mutter#2146, glgo#GNOME/mutter!2712).
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Dec 18 06:47:32 UTC 2023 - Alynx Zhou <alynx.zhou@suse.com>
|
||||||
|
|
||||||
|
- Add mutter-fix-x11-restart.patch: glgo#GNOME/mutter!2445 breaks
|
||||||
|
restarting under x11 accidentally because it redirects subwindows
|
||||||
|
after redirecting windows, this patch fix it by redirecting
|
||||||
|
subwindows first (glgo#GNOME/gnome-shell#7050,
|
||||||
|
glgo#GNOME/mutter!3329).
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Dec 7 15:09:40 UTC 2023 - Dominique Leuenberger <dimstar@opensuse.org>
|
||||||
|
|
||||||
|
- Update to version 45.2:
|
||||||
|
+ Disable HW cursor when inhibited by backend.
|
||||||
|
+ Fix disabling check-alive timeout.
|
||||||
|
+ Propagate focus appearance to all ancestors.
|
||||||
|
+ Fix tablets on X11 having the wrong device.
|
||||||
|
+ Fixed crash.
|
||||||
|
+ Updated translations.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Sun Dec 3 15:54:07 UTC 2023 - Yifan Jiang <yfjiang@suse.com>
|
||||||
|
|
||||||
|
- Rebase mutter-SLE-bsc984738-grab-display.patch.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Nov 28 11:57:17 UTC 2023 - Dominique Leuenberger <dimstar@opensuse.org>
|
||||||
|
|
||||||
|
- Use %patch -p N instead of deprecated %patchN.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Nov 1 09:38:49 UTC 2023 - Bjørn Lie <bjorn.lie@gmail.com>
|
||||||
|
|
||||||
|
- Update to version 45.1:
|
||||||
|
+ Fix filtering keybinding events in presence of grabs
|
||||||
|
+ Fix direct scanout support when using integer scaling
|
||||||
|
+ Fix capitalization of some keys when caps lock is on
|
||||||
|
+ Fix vsync regression
|
||||||
|
+ Fix visibility of software cursors when using direct scanout
|
||||||
|
+ Fix artifacts at the bottom of some surfaces
|
||||||
|
+ Discard monitor configs with fractional scale when unusable
|
||||||
|
+ Apply track point settings
|
||||||
|
+ xwayland: Enable XDG portal only when not nested
|
||||||
|
+ Inhibit real-time scheduling when mode setting
|
||||||
|
+ Don't delay frame updates after idle period
|
||||||
|
+ Fix running Xwayland in headless setup with nvidia driver
|
||||||
|
+ wayland: Send keyboard modifiers after the enter event
|
||||||
|
+ Fixed crashes
|
||||||
|
+ Misc. bug fixes and cleanups
|
||||||
|
+ Updated translations.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Oct 26 18:23:21 UTC 2023 - bjorn.lie@gmail.com
|
||||||
|
|
||||||
|
- Update to version 45.0+61:
|
||||||
|
+ backend:
|
||||||
|
- Introduce helpers for turning from/to clutter/evdev buttons
|
||||||
|
- Use helper to translate from/to clutter/evdev button codes
|
||||||
|
+ clutter/frame-clock:
|
||||||
|
- Simplify next_presentation_time_us calculation
|
||||||
|
- Start next update ASAP after idle period
|
||||||
|
+ cogl/onscreen: Add missing error untrap calls
|
||||||
|
+ input-capture:
|
||||||
|
- Check barriers don't extend into nonexisting monitors
|
||||||
|
- Fix off-by-one for barrier validation
|
||||||
|
+ renderer/native:
|
||||||
|
- Add a new has_addfb2 property
|
||||||
|
- Send modifiers even without AddFb2
|
||||||
|
+ screen-cast/stream-src:
|
||||||
|
- Assert that dmabuf handle lookup succeeds
|
||||||
|
- Calculate stride after adding handle to hash table
|
||||||
|
+ tests/clutter/event-delivery: Avoid race with stage update
|
||||||
|
+ tests/clutter/frame-clock*: Use
|
||||||
|
clutter_frame_get_target_presentation_time
|
||||||
|
+ wayland/dma-buf: Advertise INVALID modifier without AddFb2
|
||||||
|
+ wayland: Send keyboard modifiers after the enter event
|
||||||
|
+ input-capture: Add more barrier tests, mostly for invalid
|
||||||
|
barriers
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Oct 13 09:27:31 UTC 2023 - bjorn.lie@gmail.com
|
||||||
|
|
||||||
|
- Update to version 45.0+45:
|
||||||
|
+ kms/impl-device/atomic:
|
||||||
|
- Fix blob size
|
||||||
|
- Fix stack overflow
|
||||||
|
+ kms/impl-device: Inhibit real-time scheduling when mode setting
|
||||||
|
+ monitor-manager/native: Update assignments on empty-config too
|
||||||
|
+ renderer/native:
|
||||||
|
- Clear old pending mode sets when unsetting all modes
|
||||||
|
- Fold mode unsetting into renamed unset_modes()
|
||||||
|
+ tests/dbusmock-templates/rtkit: Add MakeThreadHighPriority
|
||||||
|
+ tests/kms/render: Add test for setting empty config
|
||||||
|
+ thread:
|
||||||
|
- Allow turning off rt scheduling for running thread
|
||||||
|
- For consistency, s/real_time/realtime/
|
||||||
|
+ Updated translations.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Oct 9 20:50:24 UTC 2023 - Bjørn Lie <bjorn.lie@gmail.com>
|
||||||
|
|
||||||
|
- Drop mutter-crash-meta_context_terminate.patch: Closed upstream
|
||||||
|
via https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2609
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Sat Sep 16 22:09:37 UTC 2023 - Bjørn Lie <bjorn.lie@gmail.com>
|
||||||
|
|
||||||
|
- Update to version 45.0:
|
||||||
|
+ Fix focus-follows-mouse mode
|
||||||
|
+ Optimize applying relative transformation matrix
|
||||||
|
+ Add support for P010 YCbCr format
|
||||||
|
+ Fix hardware cursor stuttering on Raspberry Pi
|
||||||
|
+ Fix input in multi-monitor remote desktop sessions with libei
|
||||||
|
+ Fixed crashes
|
||||||
|
+ Misc. bug fixes and cleanups
|
||||||
|
+ Updated translations.
|
||||||
|
- Drop mutter-trap-dpms-errors.patch: Fixed upstream.
|
||||||
|
- Change compression of tarball in service and spec to zst from xz.
|
||||||
|
- Add pkgconfig(libdisplay-info) BuildRequires and pass
|
||||||
|
libdisplay_info=true to meson setup: New optional dependency,
|
||||||
|
build libdisplay-info support.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Sep 14 02:51:54 UTC 2023 - Alynx Zhou <alynx.zhou@suse.com>
|
||||||
|
|
||||||
|
- Add mutter-trap-dpms-errors.patch: Apparently DPMSForceLevel()
|
||||||
|
can fail if DPMS is not enabled, so trap errors of DPMS because
|
||||||
|
they are not critical and should not block user session.
|
||||||
|
(bsc#1215273, glgo#GNOME/mutter!3160)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Sep 7 22:56:54 UTC 2023 - Luciano Santos <luc14n0@opensuse.org>
|
||||||
|
|
||||||
|
- Replace sysprof-4 with sysprof-6 pkgconfig() BuildRequires to
|
||||||
|
follow up the upstream change. And build without the profiler
|
||||||
|
feature (using bcond_with profiler), as it's not meant for
|
||||||
|
general use.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Sep 6 19:09:15 UTC 2023 - Bjørn Lie <bjorn.lie@gmail.com>
|
||||||
|
|
||||||
|
- Update to version 45.rc:
|
||||||
|
+ Fix possible redraw freeze in fullscreen windows
|
||||||
|
+ Fix restoring focus when leaving the overview
|
||||||
|
+ Support alpha-composited window screencasts
|
||||||
|
+ Fix some XWayland windows not getting mapped
|
||||||
|
+ Fix cursor movement on rotated screens
|
||||||
|
+ Avoid global lock in stage signals
|
||||||
|
+ Implemented suspended xdg_toplevel state
|
||||||
|
+ Support idle_inhibit protocol
|
||||||
|
+ Do not trigger repick during relayout
|
||||||
|
+ Fix redraw issue when buffer age is unavailable
|
||||||
|
+ Add Meta Toolkit (MTK) library
|
||||||
|
+ Fix possible window freeze during resize operations
|
||||||
|
+ Fixes to tablet cursor visibility on Wayland
|
||||||
|
+ Improve support for input capture and emulated input
|
||||||
|
+ Use headless mode when seat ID is unset
|
||||||
|
+ Fix unresponsive touchscreen after titlebar drag
|
||||||
|
+ Fix absolute pointer events on virtual monitor streams
|
||||||
|
+ Fix disabling CRTCs in disable-only mode updates
|
||||||
|
+ Cache multi-texture shader snippets
|
||||||
|
+ Fixed crashes
|
||||||
|
+ Plugged leaks
|
||||||
|
+ Misc. bug fixes and cleanups
|
||||||
|
+ Updated translations.
|
||||||
|
- Drop mutter-fix-clipped-redraw.patch: Fixed upstream.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Sep 4 17:43:47 UTC 2023 - Bjørn Lie <bjorn.lie@gmail.com>
|
||||||
|
|
||||||
|
- Update to version 45.beta.1:
|
||||||
|
+ Fix blitting from premultiplied to opaque formats
|
||||||
|
+ Fix Super key not going to overview in GNOME Shell
|
||||||
|
+ Use ClutterEvent in ClutterActor class event vmethod signatures
|
||||||
|
+ Misc. bug fixes and cleanups
|
||||||
|
+ Updated translations.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Sep 4 16:43:28 UTC 2023 - Bjørn Lie <bjorn.lie@gmail.com>
|
||||||
|
|
||||||
|
- Update to version 45.beta:
|
||||||
|
+ Support input capture and emulated input with libei
|
||||||
|
+ Add KMS thread
|
||||||
|
+ Fix touch move operations on subsurfaces
|
||||||
|
+ Fix unexpected cursor changes over non-resizable windows
|
||||||
|
+ Improve render time estimates
|
||||||
|
+ Fix flickering when DRI driver isn't available
|
||||||
|
+ Fix restoring maximized state of SSD windows
|
||||||
|
+ Add support for YUV formats
|
||||||
|
+ Fix xwayland-allow-byte-swapped-clients setting
|
||||||
|
+ Misc. bug fixes and cleanups
|
||||||
|
+ Updated translations.
|
||||||
|
- Add pkgconfig(libeis-1.0) BuildRequires: New dependency.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Sep 4 15:32:03 UTC 2023 - Bjørn Lie <bjorn.lie@gmail.com>
|
||||||
|
|
||||||
|
- Update to version 45.alpha:
|
||||||
|
+ Fix DND in some server-side decorated windows
|
||||||
|
+ Optionally use libdisplay-info for EDID parsing
|
||||||
|
+ Optimize partial surface updates
|
||||||
|
+ Fix redrawing regression in non-DMA remote sessions
|
||||||
|
+ Avoid race condition in xwayland-on-demand
|
||||||
|
+ Do not unminimize windows with initial IconicState
|
||||||
|
+ Implement physical pixel rounding of wayland surfaces
|
||||||
|
+ Fix mispositioning of some X11 fullscreen windows
|
||||||
|
+ Fix legacy fullscreen windows appearing on all monitors
|
||||||
|
+ Improve support for display-attached tablets
|
||||||
|
+ Fix stuck cursor in some clients
|
||||||
|
+ Avoid unexpected orientation changes around suspend/resume
|
||||||
|
+ Fix oversized input region around Xwayland windows
|
||||||
|
+ Re-enable client modifiers with amdgpu driver
|
||||||
|
+ Fix sysprof tracing in non-main threads
|
||||||
|
+ Fix X11 client input region issues
|
||||||
|
+ Optimize finish-layout step during stage updating
|
||||||
|
+ Fix profiling repeatedly
|
||||||
|
+ Ensure preferred monitor mode is always included
|
||||||
|
+ Fully initialize input device state during init
|
||||||
|
+ Forward modifiers to IM alongside regular key events
|
||||||
|
+ Fix window focus unexpectedly moving to secondary monitor when
|
||||||
|
changing workspaces
|
||||||
|
+ Avoid rapidly toggling dynamic max render time
|
||||||
|
+ Fix dynamic max render time blocking with direct scanout
|
||||||
|
+ Mirror window placement in RTL locales
|
||||||
|
+ Fix screencast with fractionally scaled surfaces
|
||||||
|
+ Reipmlement strict focus mode policy
|
||||||
|
+ Fixed crashes
|
||||||
|
+ Plugged leaks
|
||||||
|
+ Misc. bug fixes and cleanups
|
||||||
|
+ Updated translations.
|
||||||
|
- Bump api_major to 13 following upstream changes.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Sep 4 14:28:19 UTC 2023 - Bjørn Lie <bjorn.lie@gmail.com>
|
||||||
|
|
||||||
|
- Update to version 44.4:
|
||||||
|
+ Fix xwayland-allow-byte-swapped-clients setting.
|
||||||
|
+ Fix restoring focus when leaving the overview.
|
||||||
|
+ Fix touch move operations on subsurfaces.
|
||||||
|
+ Fix flickering when DRI driver isn't available.
|
||||||
|
+ Fix unexpected cursor changes over non-resizable windows.
|
||||||
|
+ Fix restoring maximized state of SSD windows.
|
||||||
|
+ Fix window focus unexpectedly moving to secondary monitor when
|
||||||
|
changing workspaces.
|
||||||
|
+ Fixed crash.
|
||||||
|
+ Misc. bug fixes and cleanups.
|
||||||
|
+ Updated translations.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Aug 29 09:50:53 UTC 2023 - Alynx Zhou <alynx.zhou@suse.com>
|
||||||
|
|
||||||
|
- Add mutter-fix-clipped-redraw.patch: Previous refactor forget
|
||||||
|
to check has_buffer_age, which leads into force full redraw and
|
||||||
|
causes redraw issue with xterm on qemu. This patch fixes it.
|
||||||
|
(bsc#1210744, glgo#GNOME/mutter!3221)
|
||||||
|
- Drop mutter-revert-window_draw_issues.patch: Proper fix is added.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Aug 22 09:24:36 UTC 2023 - Dominique Leuenberger <dimstar@opensuse.org>
|
||||||
|
|
||||||
|
- Add mutter-revert-window_draw_issues.patch: Revert commit
|
||||||
|
43cee4b6: Do clipped redraws when drawing offscreen
|
||||||
|
(boo#1210744, glgo#GNOME/mutter#2771).
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Aug 17 09:36:34 UTC 2023 - Yifan Jiang <yfjiang@suse.com>
|
||||||
|
|
||||||
|
- Disable %autopatch on SLE which has not the macro ready.
|
||||||
|
- Rebase mutter-SLE-bsc984738-grab-display.patch.
|
||||||
|
- Drop mutter-Lower-HIDPI_LIMIT-to-144.patch (fate#326682,
|
||||||
|
bsc#112546). The upstream has reworked the logic of scale factor
|
||||||
|
selection based on actual screen size, see:
|
||||||
|
https://gitlab.gnome.org/GNOME/mutter/-/commit/2f1dd049bfbbb60e0b3c2351e9ba1d014205551f
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Jul 6 18:10:34 UTC 2023 - Bjørn Lie <bjorn.lie@gmail.com>
|
||||||
|
|
||||||
|
- Update to version 44.3:
|
||||||
|
+ Ensure preferred monitor mode is always included.
|
||||||
|
+ Avoid rapidly toggling dynamic max render time.
|
||||||
|
+ Fix dynamic max render time blocking with direct scanout.
|
||||||
|
+ Misc. bug fixes.
|
||||||
|
+ Updated translations.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Jun 05 07:34:52 UTC 2023 - bjorn.lie@gmail.com
|
||||||
|
|
||||||
|
- Update to version 44.2:
|
||||||
|
+ Fix DND in some server-side decorated windows
|
||||||
|
+ Fix redrawing regression in non-DMA remote sessions
|
||||||
|
+ Avoid race condition in xwayland-on-demand
|
||||||
|
+ Do not unminimize windows with initial IconicState
|
||||||
|
+ Fix mispositioning of some X11 fullscreen windows
|
||||||
|
+ Fix legacy fullscreen windows appearing on all monitors
|
||||||
|
+ Improve support for display-attached tablets
|
||||||
|
+ Fix stuck cursor in some clients
|
||||||
|
+ Avoid unexpected orientation changes around suspend/resume
|
||||||
|
+ Fix oversized input region around Xwayland windows
|
||||||
|
+ Fix X11 client input region issues
|
||||||
|
+ Plugged leak
|
||||||
|
+ Fixed crashes
|
||||||
|
+ Misc. bug fixes and cleanups
|
||||||
|
+ Updated translations.
|
||||||
|
- Drop patches fixed upstream:
|
||||||
|
+ mutter-do-not-unminimize-windows-with-initial-iconic.patch
|
||||||
|
+ mutter-fix-wacom-tablet-crash.patch
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue May 23 07:41:44 UTC 2023 - Alynx Zhou <alynx.zhou@suse.com>
|
||||||
|
|
||||||
|
- Add mutter-do-not-unminimize-windows-with-initial-iconic.patch:
|
||||||
|
mutter used to unminimize windows with initial IconicState, which
|
||||||
|
is a workaround for some old wine games, it breaks apps like
|
||||||
|
xterm starts with -iconic, this patch revert it (bsc#1193190,
|
||||||
|
glgo#GNOME/mutter!3001).
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed May 17 03:01:48 UTC 2023 - Alynx Zhou <alynx.zhou@suse.com>
|
||||||
|
|
||||||
|
- Add mutter-fix-wacom-tablet-crash.patch: Use clutter error trap
|
||||||
|
to fix x11 error of some input device configuration like wacom
|
||||||
|
tablet (bsc#1211413, glgo#GNOME/mutter#2796).
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue May 09 09:30:19 UTC 2023 - bjorn.lie@gmail.com
|
Tue May 09 09:30:19 UTC 2023 - bjorn.lie@gmail.com
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
name: mutter
|
name: mutter
|
||||||
version: 44.1+2
|
version: 45.3
|
||||||
mtime: 1683227330
|
mtime: 1704584095
|
||||||
commit: 82bd40dcbcc3601da755678778f033bd9a30286d
|
commit: 5012d22cb96ba22c4133e2e488ea1f5241fb50e2
|
||||||
|
54
mutter.spec
54
mutter.spec
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package mutter
|
# spec file for package mutter
|
||||||
#
|
#
|
||||||
# Copyright (c) 2023 SUSE LLC
|
# Copyright (c) 2024 SUSE LLC
|
||||||
#
|
#
|
||||||
# All modifications and additions to the file contributed by third parties
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@ -16,36 +16,42 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
%bcond_without profiler
|
%bcond_with profiler
|
||||||
|
|
||||||
%define api_major 12
|
%define api_major 13
|
||||||
%define api_minor 0
|
%define api_minor 0
|
||||||
%define libmutter libmutter-%{api_major}-%{api_minor}
|
%define libmutter libmutter-%{api_major}-%{api_minor}
|
||||||
Name: mutter
|
Name: mutter
|
||||||
Version: 44.1+2
|
Version: 45.3
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: Window and compositing manager based on Clutter
|
Summary: Window and compositing manager based on Clutter
|
||||||
License: GPL-2.0-or-later
|
License: GPL-2.0-or-later
|
||||||
Group: System/GUI/GNOME
|
Group: System/GUI/GNOME
|
||||||
URL: https://www.gnome.org
|
URL: https://www.gnome.org
|
||||||
Source0: %{name}-%{version}.tar.xz
|
Source0: %{name}-%{version}.tar.zst
|
||||||
|
|
||||||
# PATCH-FIX-UPSTREAM mutter-disable-cvt-s390x.patch bsc#1158128 fcrozat@suse.com -- Do not search for cvt on s390x, it doesn't exist there
|
# PATCH-FIX-UPSTREAM mutter-disable-cvt-s390x.patch bsc#1158128 fcrozat@suse.com -- Do not search for cvt on s390x, it doesn't exist there
|
||||||
Patch1: mutter-disable-cvt-s390x.patch
|
Patch1: mutter-disable-cvt-s390x.patch
|
||||||
# PATCH-FIX-OPENSUSE mutter-window-actor-Special-case-shaped-Java-windows.patch -- window-actor: Special-case shaped Java windows
|
# PATCH-FIX-OPENSUSE mutter-window-actor-Special-case-shaped-Java-windows.patch -- window-actor: Special-case shaped Java windows
|
||||||
Patch2: mutter-window-actor-Special-case-shaped-Java-windows.patch
|
Patch2: mutter-window-actor-Special-case-shaped-Java-windows.patch
|
||||||
# PATCH-FIX-UPSTREAM mutter-crash-meta_context_terminate.patch bsc#1199382 glgo#GNOME/mutter#2267 xwang@suse.com -- Fix SIGSEGV in meta_context_terminate
|
# PATCH-FIX-UPSTREAM mutter-fix-x11-restart.patch glgo#GNOME/gnome-shell#7050 glgo#GNOME/mutter!3329 alynx.zhou@suse.com -- Fix crash on restarting mutter under x11
|
||||||
Patch3: mutter-crash-meta_context_terminate.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
|
||||||
|
# PATCH-FIX-UPSTREAM 0001-Revert-clutter-stage-Avoid-queueing-stage-updates-wh.patch glgo#GNOME/mutter#3452 bsc#1222612 xwang@suse.com -- Fix blank screen on Xorg when logging in or logging out
|
||||||
|
Patch6: 0001-Revert-clutter-stage-Avoid-queueing-stage-updates-wh.patch
|
||||||
|
# PATCH-FEATURE-OPENSUSE mutter-implement-text-input-v1.patch glgo#GNOME/mutter!3751 bsc#1219505 alynx.zhou@suse.com -- Allow input method to work in Wayland Chromium
|
||||||
|
Patch7: mutter-implement-text-input-v1.patch
|
||||||
|
# PATCH-FIX-UPSTREAM mutter-fix-initial-suspended-state.patch glgo#GNOME/mutter!3475 bsc#1223393 alynx.zhou@suse.com -- Fix initial suspended state for some Qt 6.7 window
|
||||||
|
Patch8: mutter-fix-initial-suspended-state.patch
|
||||||
|
|
||||||
## SLE-only patches start at 1000
|
## 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.
|
# PATCH-FEATURE-SLE mutter-SLE-bell.patch FATE#316042 bnc#889218 idonmez@suse.com -- make audible bell work out of the box.
|
||||||
Patch1000: mutter-SLE-bell.patch
|
Patch1000: mutter-SLE-bell.patch
|
||||||
# PATCH-FIX-SLE mutter-SLE-relax-some-constraints-on-CSD-windows.patch bnc#883491 cxiong@suse.com -- Relax some constraints on window positioning for CSD windows s.t. they can be placed at the very top of the monitor.
|
# PATCH-FIX-SLE mutter-SLE-relax-some-constraints-on-CSD-windows.patch bnc#883491 cxiong@suse.com -- Relax some constraints on window positioning for CSD windows s.t. they can be placed at the very top of the monitor.
|
||||||
Patch1001: mutter-SLE-relax-some-constraints-on-CSD-windows.patch
|
Patch1001: mutter-SLE-relax-some-constraints-on-CSD-windows.patch
|
||||||
# PATCH-FIX-SLE mutter-SLE-bsc984738-grab-display.patch bsc#984738 bgo#769387 hpj@suse.com -- Revert a upstream commit to avoid X11 race condition that results in wrong dialog sizes.
|
|
||||||
Patch1002: mutter-SLE-bsc984738-grab-display.patch
|
|
||||||
# PATCH-NEEDS-REBASE mutter-Lower-HIDPI_LIMIT-to-144.patch fate#326682, bsc#1125467 qkzhu@suse.com -- Lower HIDPI_LIMIT to 144 WAS
|
|
||||||
Patch1003: mutter-Lower-HIDPI_LIMIT-to-144.patch
|
|
||||||
|
|
||||||
BuildRequires: Mesa-libGLESv3-devel
|
BuildRequires: Mesa-libGLESv3-devel
|
||||||
BuildRequires: fdupes
|
BuildRequires: fdupes
|
||||||
@ -74,7 +80,9 @@ BuildRequires: pkgconfig(gudev-1.0) >= 232
|
|||||||
BuildRequires: pkgconfig(json-glib-1.0) >= 0.12.0
|
BuildRequires: pkgconfig(json-glib-1.0) >= 0.12.0
|
||||||
BuildRequires: pkgconfig(lcms2) >= 2.6
|
BuildRequires: pkgconfig(lcms2) >= 2.6
|
||||||
BuildRequires: pkgconfig(libcanberra-gtk3) >= 0.26
|
BuildRequires: pkgconfig(libcanberra-gtk3) >= 0.26
|
||||||
|
BuildRequires: pkgconfig(libdisplay-info)
|
||||||
BuildRequires: pkgconfig(libdrm) >= 2.4.83
|
BuildRequires: pkgconfig(libdrm) >= 2.4.83
|
||||||
|
BuildRequires: pkgconfig(libeis-1.0)
|
||||||
BuildRequires: pkgconfig(libinput) >= 1.15.0
|
BuildRequires: pkgconfig(libinput) >= 1.15.0
|
||||||
BuildRequires: pkgconfig(libpipewire-0.3) >= 0.3.21
|
BuildRequires: pkgconfig(libpipewire-0.3) >= 0.3.21
|
||||||
BuildRequires: pkgconfig(libstartup-notification-1.0) >= 0.7
|
BuildRequires: pkgconfig(libstartup-notification-1.0) >= 0.7
|
||||||
@ -84,8 +92,8 @@ BuildRequires: pkgconfig(libwacom) >= 0.13
|
|||||||
BuildRequires: pkgconfig(pango) >= 1.2.0
|
BuildRequires: pkgconfig(pango) >= 1.2.0
|
||||||
BuildRequires: pkgconfig(sm)
|
BuildRequires: pkgconfig(sm)
|
||||||
%if %{with profiler}
|
%if %{with profiler}
|
||||||
BuildRequires: pkgconfig(sysprof-4)
|
BuildRequires: pkgconfig(sysprof-6)
|
||||||
BuildRequires: pkgconfig(sysprof-capture-4) >= 3.37.3
|
BuildRequires: pkgconfig(sysprof-capture-4) >= 3.37.2
|
||||||
%endif
|
%endif
|
||||||
BuildRequires: pkgconfig(udev)
|
BuildRequires: pkgconfig(udev)
|
||||||
BuildRequires: pkgconfig(upower-glib) >= 0.99.0
|
BuildRequires: pkgconfig(upower-glib) >= 0.99.0
|
||||||
@ -142,10 +150,22 @@ applications that want to make use of the mutter library.
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%autosetup -N
|
%autosetup -N
|
||||||
|
%if !0%{?sle_version}
|
||||||
%autopatch -p1 -M 999
|
%autopatch -p1 -M 999
|
||||||
|
%else
|
||||||
|
%patch -P 1 -p1
|
||||||
|
%patch -P 2 -p1
|
||||||
|
%patch -P 3 -p1
|
||||||
|
%patch -P 4 -p1
|
||||||
|
%patch -P 5 -p1
|
||||||
|
%patch -P 6 -p1
|
||||||
|
%patch -P 7 -p1
|
||||||
|
%patch -P 8 -p1
|
||||||
|
%endif
|
||||||
# SLE-only patches and translations.
|
# SLE-only patches and translations.
|
||||||
%if 0%{?sle_version}
|
%if 0%{?sle_version}
|
||||||
%autopatch -p1 -m 1000
|
%patch -P 1000 -p1
|
||||||
|
%patch -P 1001 -p1
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%build
|
%build
|
||||||
@ -157,6 +177,7 @@ applications that want to make use of the mutter library.
|
|||||||
-Dtests=false \
|
-Dtests=false \
|
||||||
-Dinstalled_tests=false \
|
-Dinstalled_tests=false \
|
||||||
-Dxwayland_initfd=auto \
|
-Dxwayland_initfd=auto \
|
||||||
|
-Dlibdisplay_info=true \
|
||||||
%if %{with profiler}
|
%if %{with profiler}
|
||||||
-Dprofiler=true \
|
-Dprofiler=true \
|
||||||
%else
|
%else
|
||||||
@ -185,6 +206,7 @@ applications that want to make use of the mutter library.
|
|||||||
%{_libdir}/mutter-%{api_major}/libmutter-clutter-%{api_major}.so.*
|
%{_libdir}/mutter-%{api_major}/libmutter-clutter-%{api_major}.so.*
|
||||||
%{_libdir}/mutter-%{api_major}/libmutter-cogl-pango-%{api_major}.so.*
|
%{_libdir}/mutter-%{api_major}/libmutter-cogl-pango-%{api_major}.so.*
|
||||||
%{_libdir}/mutter-%{api_major}/libmutter-cogl-%{api_major}.so.*
|
%{_libdir}/mutter-%{api_major}/libmutter-cogl-%{api_major}.so.*
|
||||||
|
%{_libdir}/mutter-%{api_major}/libmutter-mtk-%{api_major}.so.*
|
||||||
%{_libdir}/mutter-%{api_major}/plugins/libdefault.so
|
%{_libdir}/mutter-%{api_major}/plugins/libdefault.so
|
||||||
|
|
||||||
# These typelibs are not split out since they are private to mutter
|
# These typelibs are not split out since they are private to mutter
|
||||||
@ -193,6 +215,7 @@ applications that want to make use of the mutter library.
|
|||||||
%{_libdir}/mutter-%{api_major}/Cogl-%{api_major}.typelib
|
%{_libdir}/mutter-%{api_major}/Cogl-%{api_major}.typelib
|
||||||
%{_libdir}/mutter-%{api_major}/CoglPango-%{api_major}.typelib
|
%{_libdir}/mutter-%{api_major}/CoglPango-%{api_major}.typelib
|
||||||
%{_libdir}/mutter-%{api_major}/Meta-%{api_major}.typelib
|
%{_libdir}/mutter-%{api_major}/Meta-%{api_major}.typelib
|
||||||
|
%{_libdir}/mutter-%{api_major}/Mtk-%{api_major}.typelib
|
||||||
|
|
||||||
%{_libdir}/libmutter-%{api_major}.so.*
|
%{_libdir}/libmutter-%{api_major}.so.*
|
||||||
%dir %{_libdir}/mutter-%{api_major}/
|
%dir %{_libdir}/mutter-%{api_major}/
|
||||||
@ -217,14 +240,17 @@ applications that want to make use of the mutter library.
|
|||||||
%{_libdir}/mutter-%{api_major}/Clutter-%{api_major}.gir
|
%{_libdir}/mutter-%{api_major}/Clutter-%{api_major}.gir
|
||||||
%{_libdir}/mutter-%{api_major}/Cogl-%{api_major}.gir
|
%{_libdir}/mutter-%{api_major}/Cogl-%{api_major}.gir
|
||||||
%{_libdir}/mutter-%{api_major}/CoglPango-%{api_major}.gir
|
%{_libdir}/mutter-%{api_major}/CoglPango-%{api_major}.gir
|
||||||
|
%{_libdir}/mutter-%{api_major}/Mtk-%{api_major}.gir
|
||||||
%{_libdir}/mutter-%{api_major}/libmutter-clutter-%{api_major}.so
|
%{_libdir}/mutter-%{api_major}/libmutter-clutter-%{api_major}.so
|
||||||
%{_libdir}/mutter-%{api_major}/libmutter-cogl-pango-%{api_major}.so
|
%{_libdir}/mutter-%{api_major}/libmutter-cogl-pango-%{api_major}.so
|
||||||
%{_libdir}/mutter-%{api_major}/libmutter-cogl-%{api_major}.so
|
%{_libdir}/mutter-%{api_major}/libmutter-cogl-%{api_major}.so
|
||||||
|
%{_libdir}/mutter-%{api_major}/libmutter-mtk-%{api_major}.so
|
||||||
%{_libdir}/libmutter-%{api_major}.so
|
%{_libdir}/libmutter-%{api_major}.so
|
||||||
%{_libdir}/pkgconfig/libmutter-%{api_major}.pc
|
%{_libdir}/pkgconfig/libmutter-%{api_major}.pc
|
||||||
%{_libdir}/pkgconfig/mutter-clutter-%{api_major}.pc
|
%{_libdir}/pkgconfig/mutter-clutter-%{api_major}.pc
|
||||||
%{_libdir}/pkgconfig/mutter-cogl-%{api_major}.pc
|
%{_libdir}/pkgconfig/mutter-cogl-%{api_major}.pc
|
||||||
%{_libdir}/pkgconfig/mutter-cogl-pango-%{api_major}.pc
|
%{_libdir}/pkgconfig/mutter-cogl-pango-%{api_major}.pc
|
||||||
|
%{_libdir}/pkgconfig/mutter-mtk-%{api_major}.pc
|
||||||
|
|
||||||
%files lang -f %{name}.lang
|
%files lang -f %{name}.lang
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user