Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: unblock
Please unblock package marco [ Reason ] Recently, a longterm runtime flaw in marco has been hunted down and resolved. + * debian/patches: + + Add 0002_tabpopup-fix-cairo-surface-leak.patch. Fix cairo surface leak in + src/ui/draw-workspace.c. (Closes: 990859). -> This fixes marco freezing more and more until it has become unusable after 1-2 weeks of runtime. [ Impact ] Marco regularly requires a restart (marco --replace) from the cmdline to keep a session usable without this fix being applied. [ Tests ] Patch introspection, accepted upstream. Smoke test of the marco WM (nothing broken at first spot). [ Risks ] Window manager issues in MATE Desktop Environment which then would need a follow-up upload. [ Checklist ] [x] all changes are documented in the d/changelog [x] I reviewed all changes and I approve them [x] attach debdiff against the package in testing [ Other info ] None. unblock marco/1.24.1-3
diff -Nru marco-1.24.1/debian/changelog marco-1.24.1/debian/changelog --- marco-1.24.1/debian/changelog 2021-02-02 10:45:35.000000000 +0100 +++ marco-1.24.1/debian/changelog 2021-07-10 23:47:08.000000000 +0200 @@ -1,3 +1,11 @@ +marco (1.24.1-3) unstable; urgency=medium + + * debian/patches: + + Add 0002_tabpopup-fix-cairo-surface-leak.patch. Fix cairo surface leak in + src/ui/draw-workspace.c. (Closes: 990859). + + -- Mike Gabriel <sunwea...@debian.org> Sat, 10 Jul 2021 23:47:08 +0200 + marco (1.24.1-2) unstable; urgency=medium [ Martin Wimpress ] diff -Nru marco-1.24.1/debian/patches/0002_tabpopup-fix-cairo-surface-leak.patch marco-1.24.1/debian/patches/0002_tabpopup-fix-cairo-surface-leak.patch --- marco-1.24.1/debian/patches/0002_tabpopup-fix-cairo-surface-leak.patch 1970-01-01 01:00:00.000000000 +0100 +++ marco-1.24.1/debian/patches/0002_tabpopup-fix-cairo-surface-leak.patch 2021-07-10 23:43:40.000000000 +0200 @@ -0,0 +1,51 @@ +From 8f204678be6d888ad1d2904e28af1aa9f2ad8e11 Mon Sep 17 00:00:00 2001 +From: Faidon Liambotis <parav...@debian.org> +Date: Sat, 3 Jul 2021 01:10:22 +0300 +Subject: [PATCH] tabpopup: fix cairo surface leak + +Commit 6b05da5e49996a2101edfd703dd3f5d91011d726 introduced a Cairo +surface leak, by calling gdk_cairo_surface_create_from_pixbuf() but then +never freeing those surfaces with cairo_surface_destroy(). + +This manifested in leaking resources when switching between virtual +desktops, as observed using xrestop ("Pxms" column), which made the +desktop slow and ultimately unusable after a few weeks of uptime. + +Fixes #685 +--- + src/ui/draw-workspace.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/src/ui/draw-workspace.c b/src/ui/draw-workspace.c +index 8229abd00..fc8f82e55 100644 +--- a/src/ui/draw-workspace.c ++++ b/src/ui/draw-workspace.c +@@ -131,6 +131,7 @@ draw_window (GtkWidget *widget, + /* If the icon is too big, fall back to mini icon. */ + if (icon_w > (winrect->width - 2) || icon_h > (winrect->height - 2)) + { ++ cairo_surface_destroy (icon); + icon = gdk_cairo_surface_create_from_pixbuf (win->mini_icon, scale, NULL); + if (icon) + { +@@ -139,7 +140,10 @@ draw_window (GtkWidget *widget, + + /* Give up. */ + if (icon_w > (winrect->width - 2) || icon_h > (winrect->height - 2)) +- icon = NULL; ++ { ++ cairo_surface_destroy (icon); ++ icon = NULL; ++ } + } + } + } +@@ -155,6 +159,8 @@ draw_window (GtkWidget *widget, + cairo_clip (cr); + cairo_paint (cr); + cairo_restore (cr); ++ ++ cairo_surface_destroy (icon); + } + + gtk_style_context_get_color (style, state, &color); diff -Nru marco-1.24.1/debian/patches/series marco-1.24.1/debian/patches/series --- marco-1.24.1/debian/patches/series 2021-02-02 10:44:11.000000000 +0100 +++ marco-1.24.1/debian/patches/series 2021-07-10 23:43:47.000000000 +0200 @@ -1 +1,2 @@ 0001_no-shadows-for-side-tiled-windows.patch +0002_tabpopup-fix-cairo-surface-leak.patch