diff options
author | Iain Holmes <iain@src.gnome.org> | 2007-11-27 00:16:02 +0000 |
---|---|---|
committer | Iain Holmes <iain@src.gnome.org> | 2007-11-27 00:16:02 +0000 |
commit | 6701ddbb657aabd1cdd9ad50df46e579bc363a8f (patch) | |
tree | ebe4f7ebd4fc6c607e0a629532371a1ec865517f | |
parent | 10c20b319e82b754a494e2027c483d84aa9e7d40 (diff) | |
download | metacity-6701ddbb657aabd1cdd9ad50df46e579bc363a8f.tar.gz |
Fix some massive memory leaks
svn path=/branches/iains-blingtastic-bucket-o-bling/; revision=3441
-rw-r--r-- | src/compositor.c | 4 | ||||
-rw-r--r-- | src/screen.c | 8 |
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); |