Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: unblock
Please unblock package metacity for a bug fix and a performance/UI improvement. metacity (1:2.34.3-4) unstable; urgency=low * Cherry-pick some upstream patches. + 10_leak.patch: small memory leak. + 11_remove_thumbnails.patch: remove the code to make thumbnails of active windows. It is too slow. Closes: #696323. + 12_icons_96px.patch: use 96x96 icons by default. unblock metacity/1:2.34.3-4 Thanks, -- .''`. Josselin Mouette : :' : `. `' `-
Index: debian/patches/12_icons_96px.patch =================================================================== --- debian/patches/12_icons_96px.patch (révision 0) +++ debian/patches/12_icons_96px.patch (révision 36495) @@ -0,0 +1,65 @@ +From 861d49c2a11c1a7f0fa49d0fcdbc8dfd22342e0a Mon Sep 17 00:00:00 2001 +From: Jasper St. Pierre <jstpie...@mecheye.net> +Date: Tue, 18 Dec 2012 13:02:29 +0000 +Subject: screen: Increase typical alt-tab icon size to 96 + +Now we removed thumbnailing in the alt-tab switcher, the switcher is +more difficult to use with its small icons. + +We switch to mutter-like higher resolution icons to be able to distinct +them better (the new size is about the same order as the thumbnails), +as more and more applications are providing high-res icons. + +This patch is ported from mutter, cf +https://bugzilla.gnome.org/show_bug.cgi?id=689651 + +https://bugzilla.gnome.org/show_bug.cgi?id=504729 +--- +diff --git a/src/core/screen.c b/src/core/screen.c +index 52e020a..85d2165 100644 +--- a/src/core/screen.c ++++ b/src/core/screen.c +@@ -119,14 +119,21 @@ set_wm_icon_size_hint (MetaScreen *screen) + #define N_VALS 6 + gulong vals[N_VALS]; + ++ /* We've bumped the real icon size up to 96x96, but ++ * we really should not add these sorts of constraints ++ * on clients still using the legacy WM_HINTS interface. ++ */ ++#define LEGACY_ICON_SIZE 32 ++ + /* min width, min height, max w, max h, width inc, height inc */ +- vals[0] = META_ICON_WIDTH; +- vals[1] = META_ICON_HEIGHT; +- vals[2] = META_ICON_WIDTH; +- vals[3] = META_ICON_HEIGHT; ++ vals[0] = LEGACY_ICON_SIZE; ++ vals[1] = LEGACY_ICON_SIZE; ++ vals[2] = LEGACY_ICON_SIZE; ++ vals[3] = LEGACY_ICON_SIZE; + vals[4] = 0; + vals[5] = 0; +- ++#undef LEGACY_ICON_SIZE ++ + XChangeProperty (screen->display->xdisplay, screen->xroot, + screen->display->atom_WM_ICON_SIZE, + XA_CARDINAL, +diff --git a/src/include/common.h b/src/include/common.h +index 4ce800b..651fa07 100644 +--- a/src/include/common.h ++++ b/src/include/common.h +@@ -258,8 +258,8 @@ struct _MetaButtonLayout + }; + + /* should investigate changing these to whatever most apps use */ +-#define META_ICON_WIDTH 32 +-#define META_ICON_HEIGHT 32 ++#define META_ICON_WIDTH 96 ++#define META_ICON_HEIGHT 96 + #define META_MINI_ICON_WIDTH 16 + #define META_MINI_ICON_HEIGHT 16 + +-- +cgit v0.9.0.2 Index: debian/patches/11_remove_thumbnails.patch =================================================================== --- debian/patches/11_remove_thumbnails.patch (révision 0) +++ debian/patches/11_remove_thumbnails.patch (révision 36495) @@ -0,0 +1,126 @@ +From 04ad17378e0f366dd503cf0881e3a3f9ae603699 Mon Sep 17 00:00:00 2001 +From: Stéphane Démurget <stephane.demur...@free.fr> +Date: Tue, 18 Dec 2012 12:44:53 +0000 +Subject: screen: Remove alt-tab thumbnails + +gdk_pixbuf_scale_simple generates very nice thumbnails at the expense of +a very slow rendering. So slow that the alt-tab popup is not usable: it +needs 3.6 seconds to downscale 30 windows of dimension 1600x900 on an +fairly recent computer. + +We remove the thumbnailing to makes alt-tab blazing fast again in the +composited mode. + +https://bugzilla.gnome.org/show_bug.cgi?id=504729 +--- +diff --git a/src/core/screen.c b/src/core/screen.c +index 34dcdc3..52e020a 100644 +--- a/src/core/screen.c ++++ b/src/core/screen.c +@@ -1197,49 +1197,6 @@ meta_screen_update_cursor (MetaScreen *screen) + XFreeCursor (screen->display->xdisplay, xcursor); + } + +-#define MAX_PREVIEW_SIZE 150.0 +- +-static GdkPixbuf * +-get_window_pixbuf (MetaWindow *window, +- int *width, +- int *height) +-{ +- Pixmap pmap; +- GdkPixbuf *pixbuf, *scaled; +- double ratio; +- +- pmap = meta_compositor_get_window_pixmap (window->display->compositor, +- window); +- if (pmap == None) +- return NULL; +- +- pixbuf = meta_ui_get_pixbuf_from_pixmap (pmap); +- if (pixbuf == NULL) +- return NULL; +- +- *width = gdk_pixbuf_get_width (pixbuf); +- *height = gdk_pixbuf_get_height (pixbuf); +- +- /* Scale pixbuf to max dimension MAX_PREVIEW_SIZE */ +- if (*width > *height) +- { +- ratio = ((double) *width) / MAX_PREVIEW_SIZE; +- *width = (int) MAX_PREVIEW_SIZE; +- *height = (int) (((double) *height) / ratio); +- } +- else +- { +- ratio = ((double) *height) / MAX_PREVIEW_SIZE; +- *height = (int) MAX_PREVIEW_SIZE; +- *width = (int) (((double) *width) / ratio); +- } +- +- scaled = gdk_pixbuf_scale_simple (pixbuf, *width, *height, +- GDK_INTERP_BILINEAR); +- g_object_unref (pixbuf); +- return scaled; +-} +- + void + meta_screen_ensure_tab_popup (MetaScreen *screen, + MetaTabList list_type, +@@ -1272,41 +1229,23 @@ meta_screen_ensure_tab_popup (MetaScreen *screen, + { + MetaWindow *window; + MetaRectangle r; +- GdkPixbuf *win_pixbuf; +- int width, height; + + window = tmp->data; +- ++ ++ /* Metacity used to generated a thumbnail of the window contents ++ * using gdk_pixbuf_simple_scale which is so slow with bilinear ++ * interpolation that it has been removed. ++ * ++ * The cairo downscale could have been an alternative, but the ++ * result is terrible ATM, so it is simply better to have the ++ * same user story as the non-composited case (no thumbnail). ++ * ++ * https://bugzilla.gnome.org/show_bug.cgi?id=504729 ++ */ ++ + entries[i].key = (MetaTabEntryKey) window->xwindow; + entries[i].title = window->title; +- +- win_pixbuf = get_window_pixbuf (window, &width, &height); +- if (win_pixbuf == NULL) +- entries[i].icon = g_object_ref (window->icon); +- else +- { +- int icon_width, icon_height, t_width, t_height; +-#define ICON_OFFSET 6 +- +- icon_width = gdk_pixbuf_get_width (window->icon); +- icon_height = gdk_pixbuf_get_height (window->icon); +- +- t_width = width + ICON_OFFSET; +- t_height = height + ICON_OFFSET; +- +- entries[i].icon = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, +- t_width, t_height); +- gdk_pixbuf_fill (entries[i].icon, 0x00000000); +- gdk_pixbuf_copy_area (win_pixbuf, 0, 0, width, height, +- entries[i].icon, 0, 0); +- g_object_unref (win_pixbuf); +- gdk_pixbuf_composite (window->icon, entries[i].icon, +- t_width - icon_width, t_height - icon_height, +- icon_width, icon_height, +- t_width - icon_width, t_height - icon_height, +- 1.0, 1.0, GDK_INTERP_BILINEAR, 255); +- } +- ++ entries[i].icon = g_object_ref (window->icon); + entries[i].blank = FALSE; + entries[i].hidden = !meta_window_showing_on_its_workspace (window); + entries[i].demands_attention = window->wm_state_demands_attention; +-- +cgit v0.9.0.2 Index: debian/patches/10_leak.patch =================================================================== --- debian/patches/10_leak.patch (révision 0) +++ debian/patches/10_leak.patch (révision 36495) @@ -0,0 +1,38 @@ +From d2b82ba621df8693e560bf0e10c6c56d155cb107 Mon Sep 17 00:00:00 2001 +From: Pavel Vasin <rat4v...@gmail.com> +Date: Fri, 23 Mar 2012 08:45:50 +0000 +Subject: meta_display_get_tab_list(): Fix leaked GSList + +https://bugzilla.gnome.org/show_bug.cgi?id=672640 +--- +diff --git a/src/core/display.c b/src/core/display.c +index caae7ff..b70112d 100644 +--- a/src/core/display.c ++++ b/src/core/display.c +@@ -4385,12 +4385,13 @@ meta_display_get_tab_list (MetaDisplay *display, + tab_list = g_list_reverse (tab_list); + + { +- GSList *tmp; ++ GSList *windows, *tmp; + MetaWindow *l_window; + +- tmp = meta_display_list_windows (display); ++ windows = meta_display_list_windows (display); + + /* Go through all windows */ ++ tmp = windows; + while (tmp != NULL) + { + l_window=tmp->data; +@@ -4406,6 +4407,8 @@ meta_display_get_tab_list (MetaDisplay *display, + + tmp = tmp->next; + } /* End while tmp!=NULL */ ++ ++ g_slist_free (windows); + } + + return tab_list; +-- +cgit v0.9.0.2 Index: debian/patches/series =================================================================== --- debian/patches/series (révision 36000) +++ debian/patches/series (copie de travail) @@ -1,2 +1,5 @@ 01_focus_new_window.patch 03_gtop_error.patch +10_leak.patch +11_remove_thumbnails.patch +12_icons_96px.patch Index: debian/changelog =================================================================== --- debian/changelog (révision 36000) +++ debian/changelog (copie de travail) @@ -1,3 +1,13 @@ +metacity (1:2.34.3-4) unstable; urgency=low + + * Cherry-pick some upstream patches. + + 10_leak.patch: small memory leak. + + 11_remove_thumbnails.patch: remove the code to make thumbnails of + active windows. It is too slow. Closes: #696323. + + 12_icons_96px.patch: use 96x96 icons by default. + + -- Josselin Mouette <j...@debian.org> Thu, 20 Dec 2012 00:21:46 +0100 + metacity (1:2.34.3-3) unstable; urgency=low [ Josselin Mouette ]