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..fbc486971709d0fd55aba8375f6ec59f0ec84dce 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 (link_color && link_color != &kDefaultLinkColor) |
Elliot Glaysher
2012/03/27 21:43:00
Better to set a bool if &kDefaultLinkColor set abo
|
+ 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,8 @@ GdkColor ThemeServiceGtk::BuildFrameColors(GtkStyle* frame_style) { |
kDefaultFrameShift, |
ThemeService::COLOR_FRAME, |
ThemeService::TINT_FRAME); |
+ if (theme_frame) |
+ gdk_color_free(theme_frame); |
SetThemeTintFromGtk(ThemeService::TINT_BACKGROUND_TAB, &frame_color); |
BuildAndSetFrameColor( |
@@ -827,6 +832,8 @@ GdkColor ThemeServiceGtk::BuildFrameColors(GtkStyle* frame_style) { |
kDefaultFrameShift, |
ThemeService::COLOR_FRAME_INACTIVE, |
ThemeService::TINT_FRAME_INACTIVE); |
+ if (theme_inactive_frame) |
+ gdk_color_free(theme_inactive_frame); |
BuildAndSetFrameColor( |
&frame_color, |
@@ -834,6 +841,8 @@ GdkColor ThemeServiceGtk::BuildFrameColors(GtkStyle* frame_style) { |
GetDefaultTint(ThemeService::TINT_FRAME_INCOGNITO), |
ThemeService::COLOR_FRAME_INCOGNITO, |
ThemeService::TINT_FRAME_INCOGNITO); |
+ if (theme_incognito_frame) |
+ gdk_color_free(theme_incognito_frame); |
BuildAndSetFrameColor( |
&frame_color, |
@@ -841,6 +850,8 @@ GdkColor ThemeServiceGtk::BuildFrameColors(GtkStyle* frame_style) { |
GetDefaultTint(ThemeService::TINT_FRAME_INCOGNITO_INACTIVE), |
ThemeService::COLOR_FRAME_INCOGNITO_INACTIVE, |
ThemeService::TINT_FRAME_INCOGNITO_INACTIVE); |
+ if (theme_incognito_inactive_frame) |
+ gdk_color_free(theme_incognito_inactive_frame); |
return frame_color; |
} |
@@ -993,7 +1004,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 +1013,8 @@ SkBitmap* ThemeServiceGtk::GenerateFrameImage( |
SkColor lighter = gradient_top_color ? |
gfx::GdkColorToSkColor(*gradient_top_color) : |
color_utils::HSLShift(base, kGtkFrameShift); |
+ if (gradient_top_color) |
+ gdk_color_free(gradient_top_color); |
SkShader* shader = gfx::CreateGradientShader( |
0, gradient_size, lighter, base); |
SkPaint paint; |