summaryrefslogtreecommitdiff
path: root/x11-wm/mutter/files
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2023-12-18 13:51:55 +0000
committerV3n3RiX <venerix@koprulu.sector>2023-12-18 13:51:55 +0000
commit64602f81dd4ecc257e8c5139f42b902d3555ea78 (patch)
tree85e7aaf8930e26f19c497d5a9aaa2df1881f4a6d /x11-wm/mutter/files
parentf8730c9e91ed2ce341e231c5adffb5f003f77678 (diff)
gentoo auto-resync : 18:12:2023 - 13:51:55
Diffstat (limited to 'x11-wm/mutter/files')
-rw-r--r--x11-wm/mutter/files/mutter-45.2-fullscreen-leak.patch37
1 files changed, 37 insertions, 0 deletions
diff --git a/x11-wm/mutter/files/mutter-45.2-fullscreen-leak.patch b/x11-wm/mutter/files/mutter-45.2-fullscreen-leak.patch
new file mode 100644
index 000000000000..adbd309c1b7c
--- /dev/null
+++ b/x11-wm/mutter/files/mutter-45.2-fullscreen-leak.patch
@@ -0,0 +1,37 @@
+From bedf8df88f41c34c9824dccba507c8e333dd9ba6 Mon Sep 17 00:00:00 2001
+From: Robert Balas <bluew@r14s.ch>
+Date: Mon, 4 Dec 2023 00:27:49 +0100
+Subject: [PATCH] clutter: Fix memory leak when running in fullscreen
+
+`clutter_stage_do_paint_view()` only gets called when leaving fullscreen
+and by that time enough calls to
+`clutter_actor_get_transformed_paint_volume()` can make the underlying
+GArray grow to a large size.
+
+To fix this, we call call the cleanup function in
+`clutter_stage_finish_layout()` to make it happen every frame.
+
+Co-authored-by: Sebastian Keller <skeller@gnome.org>
+
+Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3191
+Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3439>
+---
+ clutter/clutter/clutter-stage.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/clutter/clutter/clutter-stage.c b/clutter/clutter/clutter-stage.c
+index 55bb81c2b46..deb383fe216 100644
+--- a/clutter/clutter/clutter-stage.c
++++ b/clutter/clutter/clutter-stage.c
+@@ -970,6 +970,8 @@ clutter_stage_finish_layout (ClutterStage *stage)
+ }
+
+ g_warn_if_fail (!priv->actor_needs_immediate_relayout);
++
++ _clutter_stage_paint_volume_stack_free_all (stage);
+ }
+
+ void
+--
+GitLab
+