diff options
author | Robert Mader <robert.mader@posteo.de> | 2022-10-25 21:16:41 +0200 |
---|---|---|
committer | Robert Mader <robert.mader@collabora.com> | 2023-01-06 13:53:08 +0100 |
commit | 74231c839c06a32f6a0ae61515a30b49c71a6661 (patch) | |
tree | cd098adfb33b78c4ebb79d1532d6b5855053a707 | |
parent | bf936fc7b112b9b180c12f818ce89c2d022ec903 (diff) | |
download | mutter-74231c839c06a32f6a0ae61515a30b49c71a6661.tar.gz |
feedback-actor: Disable direct scanout during lifetime
We only support feedback-actors, such as DnD-icons, in the compositing
path at the moment.
The approach is similar to how we handle certain shell elements.
Implementations need to ensure no references to the object keep
around longer that necessary.
Arguably this should be replaced by a more robust and implicit actor
hierachy detection in the direct scanout code at some point.
Closes https://gitlab.gnome.org/GNOME/mutter/-/issues/2470
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2677>
(cherry picked from commit 04655c8bffc2e9dd4842f344637022e66d7ebcf1)
-rw-r--r-- | src/compositor/meta-feedback-actor.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/compositor/meta-feedback-actor.c b/src/compositor/meta-feedback-actor.c index 4b4bed78a..6daa8aeeb 100644 --- a/src/compositor/meta-feedback-actor.c +++ b/src/compositor/meta-feedback-actor.c @@ -59,6 +59,15 @@ meta_feedback_actor_constructed (GObject *object) display = meta_get_display (); feedback_group = meta_get_feedback_group_for_display (display); clutter_actor_add_child (feedback_group, CLUTTER_ACTOR (object)); + meta_disable_unredirect_for_display (display); +} + +static void +meta_feedback_actor_finalize (GObject *object) +{ + meta_enable_unredirect_for_display (meta_get_display ()); + + G_OBJECT_CLASS (meta_feedback_actor_parent_class)->finalize (object); } static void @@ -128,6 +137,7 @@ meta_feedback_actor_class_init (MetaFeedbackActorClass *klass) GParamSpec *pspec; object_class->constructed = meta_feedback_actor_constructed; + object_class->finalize = meta_feedback_actor_finalize; object_class->set_property = meta_feedback_actor_set_property; object_class->get_property = meta_feedback_actor_get_property; |