summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIain Holmes <iain@src.gnome.org>2007-11-27 00:16:02 +0000
committerIain Holmes <iain@src.gnome.org>2007-11-27 00:16:02 +0000
commit6701ddbb657aabd1cdd9ad50df46e579bc363a8f (patch)
treeebe4f7ebd4fc6c607e0a629532371a1ec865517f
parent10c20b319e82b754a494e2027c483d84aa9e7d40 (diff)
downloadmetacity-6701ddbb657aabd1cdd9ad50df46e579bc363a8f.tar.gz
Fix some massive memory leaks
svn path=/branches/iains-blingtastic-bucket-o-bling/; revision=3441
-rw-r--r--src/compositor.c4
-rw-r--r--src/screen.c8
2 files changed, 11 insertions, 1 deletions
diff --git a/src/compositor.c b/src/compositor.c
index 78cfadc8..df369dd1 100644
--- a/src/compositor.c
+++ b/src/compositor.c
@@ -2277,6 +2277,10 @@ meta_compositor_unmanage_screen (MetaCompositor *compositor,
XRenderFreePicture (display->xdisplay, info->black_picture);
g_free (info->gaussian_map);
+ g_free (info->shadow_corner);
+ g_free (info->shadow_top);
+
+ g_list_free (info->dock_windows);
XCompositeUnredirectSubwindows (display->xdisplay, screen->xroot,
CompositeRedirectManual);
diff --git a/src/screen.c b/src/screen.c
index fe94c7ce..ccd78692 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -1331,7 +1331,7 @@ meta_screen_ensure_tab_popup (MetaScreen *screen,
win_pixbuf = get_window_pixbuf (window, &width, &height);
if (win_pixbuf == NULL)
- entries[i].icon = window->icon;
+ entries[i].icon = g_object_ref (window->icon);
else
{
int icon_width, icon_height, t_width, t_height;
@@ -1348,6 +1348,8 @@ meta_screen_ensure_tab_popup (MetaScreen *screen,
gdk_pixbuf_fill (entries[i].icon, 0x00000000);
gdk_pixbuf_copy_area (win_pixbuf, 0, 0, width, height,
entries[i].icon, 0, 0);
+ gdk_pixbuf_unref (win_pixbuf);
+
gdk_pixbuf_composite (window->icon, entries[i].icon,
t_width - icon_width, t_height - icon_height,
icon_width, icon_height,
@@ -1414,6 +1416,10 @@ meta_screen_ensure_tab_popup (MetaScreen *screen,
len,
5, /* FIXME */
TRUE);
+
+ for (i = 0; i < len; i++)
+ g_object_unref (entries[i].icon);
+
g_free (entries);
g_list_free (tab_list);