Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(305)

Unified Diff: chrome/browser/ui/gtk/theme_service_gtk.cc

Issue 9855028: gtk: Fix memory leak in ThemeServiceGtk::LoadGtkValues. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix other leaks Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/gtk/theme_service_gtk.cc
diff --git a/chrome/browser/ui/gtk/theme_service_gtk.cc b/chrome/browser/ui/gtk/theme_service_gtk.cc
index 7c50f6e888fc95ca30898d03d4b87433edf5ff1a..be54aa93671795ab1843dc068e94282938b80e2e 100644
--- a/chrome/browser/ui/gtk/theme_service_gtk.cc
+++ b/chrome/browser/ui/gtk/theme_service_gtk.cc
@@ -778,6 +778,9 @@ void ThemeServiceGtk::LoadGtkValues() {
SetThemeColorFromGtk(ThemeService::COLOR_NTP_SECTION_LINK_UNDERLINE,
link_color);
+ if (!gdk_color_equal(link_color, &kDefaultLinkColor))
John Knottenbelt 2012/03/27 14:45:47 We need to compare address, rather than value. Al
tfarina 2012/03/27 15:29:06 Done.
+ gdk_color_free(const_cast<GdkColor*>(link_color));
+
// Generate the colors that we pass to WebKit.
focus_ring_color_ = gfx::GdkColorToSkColor(frame_color);
GdkColor thumb_active_color, thumb_inactive_color, track_color;
@@ -801,10 +804,10 @@ void ThemeServiceGtk::LoadGtkValues() {
}
GdkColor ThemeServiceGtk::BuildFrameColors(GtkStyle* frame_style) {
- const GdkColor* theme_frame = NULL;
- const GdkColor* theme_inactive_frame = NULL;
- const GdkColor* theme_incognito_frame = NULL;
- const GdkColor* theme_incognito_inactive_frame = NULL;
+ GdkColor* theme_frame = NULL;
+ GdkColor* theme_inactive_frame = NULL;
+ GdkColor* theme_incognito_frame = NULL;
+ GdkColor* theme_incognito_inactive_frame = NULL;
gtk_widget_style_get(GTK_WIDGET(fake_frame_),
"frame-color", &theme_frame,
"inactive-frame-color", &theme_inactive_frame,
@@ -819,6 +822,7 @@ GdkColor ThemeServiceGtk::BuildFrameColors(GtkStyle* frame_style) {
kDefaultFrameShift,
ThemeService::COLOR_FRAME,
ThemeService::TINT_FRAME);
+ gdk_color_free(theme_frame);
John Knottenbelt 2012/03/27 14:45:47 We need to check for NULL here and in the other ca
tfarina 2012/03/27 15:29:06 Done.
SetThemeTintFromGtk(ThemeService::TINT_BACKGROUND_TAB, &frame_color);
BuildAndSetFrameColor(
@@ -827,6 +831,7 @@ GdkColor ThemeServiceGtk::BuildFrameColors(GtkStyle* frame_style) {
kDefaultFrameShift,
ThemeService::COLOR_FRAME_INACTIVE,
ThemeService::TINT_FRAME_INACTIVE);
+ gdk_color_free(theme_inactive_frame);
BuildAndSetFrameColor(
&frame_color,
@@ -834,6 +839,7 @@ GdkColor ThemeServiceGtk::BuildFrameColors(GtkStyle* frame_style) {
GetDefaultTint(ThemeService::TINT_FRAME_INCOGNITO),
ThemeService::COLOR_FRAME_INCOGNITO,
ThemeService::TINT_FRAME_INCOGNITO);
+ gdk_color_free(theme_incognito_frame);
BuildAndSetFrameColor(
&frame_color,
@@ -841,6 +847,7 @@ GdkColor ThemeServiceGtk::BuildFrameColors(GtkStyle* frame_style) {
GetDefaultTint(ThemeService::TINT_FRAME_INCOGNITO_INACTIVE),
ThemeService::COLOR_FRAME_INCOGNITO_INACTIVE,
ThemeService::TINT_FRAME_INCOGNITO_INACTIVE);
+ gdk_color_free(theme_incognito_inactive_frame);
return frame_color;
}
@@ -993,7 +1000,7 @@ SkBitmap* ThemeServiceGtk::GenerateFrameImage(
gfx::Canvas canvas(gfx::Size(kToolbarImageWidth, kToolbarImageHeight), true);
int gradient_size;
- const GdkColor* gradient_top_color = NULL;
+ GdkColor* gradient_top_color = NULL;
gtk_widget_style_get(GTK_WIDGET(fake_frame_),
"frame-gradient-size", &gradient_size,
gradient_name, &gradient_top_color,
@@ -1002,6 +1009,7 @@ SkBitmap* ThemeServiceGtk::GenerateFrameImage(
SkColor lighter = gradient_top_color ?
gfx::GdkColorToSkColor(*gradient_top_color) :
color_utils::HSLShift(base, kGtkFrameShift);
+ gdk_color_free(gradient_top_color);
SkShader* shader = gfx::CreateGradientShader(
0, gradient_size, lighter, base);
SkPaint paint;
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698