diff options
author | mattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-23 02:31:58 +0000 |
---|---|---|
committer | mattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-03-23 02:31:58 +0000 |
commit | 576d7890bed1717e3b7f05d9527e7a7659c7e000 (patch) | |
tree | 6d0d4f2677f4fcb1371a93376089ada71dfec280 /chrome | |
parent | d73545f4f8b2a7c6673da4b58591db5be775a4bd (diff) | |
download | chromium_src-576d7890bed1717e3b7f05d9527e7a7659c7e000.zip chromium_src-576d7890bed1717e3b7f05d9527e7a7659c7e000.tar.gz chromium_src-576d7890bed1717e3b7f05d9527e7a7659c7e000.tar.bz2 |
Linux: Fix some GdkPixbuf leaks.
Also expand some documentation for functions that returned a GdkPixbuf about
who owns the reference
BUG=38895
TEST=manual test that nothing is broken, will watch bot for leak results
Review URL: http://codereview.chromium.org/1075014
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@42302 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/browser_theme_provider.h | 2 | ||||
-rw-r--r-- | chrome/browser/gtk/extension_install_prompt_gtk.cc | 1 | ||||
-rw-r--r-- | chrome/browser/gtk/extension_installed_bubble_gtk.cc | 1 | ||||
-rw-r--r-- | chrome/browser/gtk/hung_renderer_dialog_gtk.cc | 10 | ||||
-rw-r--r-- | chrome/browser/gtk/keyword_editor_view.cc | 1 |
5 files changed, 11 insertions, 4 deletions
diff --git a/chrome/browser/browser_theme_provider.h b/chrome/browser/browser_theme_provider.h index 7545707..8ef628e 100644 --- a/chrome/browser/browser_theme_provider.h +++ b/chrome/browser/browser_theme_provider.h @@ -130,6 +130,8 @@ class BrowserThemeProvider : public NonThreadSafe, virtual bool HasCustomImage(int id) const; virtual RefCountedMemory* GetRawData(int id) const; #if defined(OS_LINUX) + // GdkPixbufs returned by GetPixbufNamed and GetRTLEnabledPixbufNamed are + // shared instances owned by the theme provider and should not be freed. virtual GdkPixbuf* GetPixbufNamed(int id) const; virtual GdkPixbuf* GetRTLEnabledPixbufNamed(int id) const; #elif defined(OS_MACOSX) diff --git a/chrome/browser/gtk/extension_install_prompt_gtk.cc b/chrome/browser/gtk/extension_install_prompt_gtk.cc index 5266a57..a0feb83 100644 --- a/chrome/browser/gtk/extension_install_prompt_gtk.cc +++ b/chrome/browser/gtk/extension_install_prompt_gtk.cc @@ -77,6 +77,7 @@ void ShowInstallPromptDialog(GtkWindow* parent, SkBitmap* skia_icon, // Put Icon in the left column. GdkPixbuf* pixbuf = gfx::GdkPixbufFromSkBitmap(skia_icon); GtkWidget* icon = gtk_image_new_from_pixbuf(pixbuf); + g_object_unref(pixbuf); gtk_box_pack_start(GTK_BOX(icon_hbox), icon, TRUE, TRUE, 0); // Create a new vbox for the right column. diff --git a/chrome/browser/gtk/extension_installed_bubble_gtk.cc b/chrome/browser/gtk/extension_installed_bubble_gtk.cc index 2ac515f..053fe15 100644 --- a/chrome/browser/gtk/extension_installed_bubble_gtk.cc +++ b/chrome/browser/gtk/extension_installed_bubble_gtk.cc @@ -150,6 +150,7 @@ void ExtensionInstalledBubbleGtk::ShowInternal() { gtk_box_pack_start(GTK_BOX(bubble_content), icon_column, FALSE, FALSE, kIconPadding); GtkWidget* image = gtk_image_new_from_pixbuf(pixbuf); + g_object_unref(pixbuf); gtk_box_pack_start(GTK_BOX(icon_column), image, FALSE, FALSE, 0); // Center text column. diff --git a/chrome/browser/gtk/hung_renderer_dialog_gtk.cc b/chrome/browser/gtk/hung_renderer_dialog_gtk.cc index ded88d6..4012b99 100644 --- a/chrome/browser/gtk/hung_renderer_dialog_gtk.cc +++ b/chrome/browser/gtk/hung_renderer_dialog_gtk.cc @@ -157,12 +157,15 @@ void HungRendererDialogGtk::ShowForTabContents(TabContents* hung_contents) { title = UTF16ToUTF8(TabContents::GetDefaultTitle()); SkBitmap favicon = it->GetFavIcon(); + GdkPixbuf* pixbuf = NULL; + if (favicon.width() > 0) + pixbuf = gfx::GdkPixbufFromSkBitmap(&favicon); gtk_list_store_set(model_, &tree_iter, - COL_FAVICON, favicon.width() > 0 - ? gfx::GdkPixbufFromSkBitmap(&favicon) - : NULL, + COL_FAVICON, pixbuf, COL_TITLE, title.c_str(), -1); + if (pixbuf) + g_object_unref(pixbuf); } } gtk_widget_show_all(GTK_WIDGET(dialog_)); @@ -223,4 +226,3 @@ void HideForTabContents(TabContents* contents) { } } // namespace hung_renderer_dialog - diff --git a/chrome/browser/gtk/keyword_editor_view.cc b/chrome/browser/gtk/keyword_editor_view.cc index e4bc1a5..d715db9 100644 --- a/chrome/browser/gtk/keyword_editor_view.cc +++ b/chrome/browser/gtk/keyword_editor_view.cc @@ -241,6 +241,7 @@ void KeywordEditorView::SetColumnValues(int model_row, GtkTreeIter* iter) { COL_KEYWORD, WideToUTF8(table_model_->GetText( model_row, IDS_SEARCH_ENGINES_EDITOR_KEYWORD_COLUMN)).c_str(), -1); + g_object_unref(pixbuf); } int KeywordEditorView::GetListStoreRowForModelRow(int model_row) const { |