Fix memleaks.

This commit is contained in:
Daiki Ueno
2011-03-03 12:37:39 +09:00
parent b8a01d794e
commit 8b632356e9
10 changed files with 40 additions and 29 deletions

View File

@ -380,6 +380,7 @@ render_key (EekRenderer *self,
cairo_fill (cr);
eek_renderer_render_key_outline (self, cr, key, 1.0, 0);
cairo_destroy (cr);
g_hash_table_insert (priv->outline_surface_cache,
outline,
@ -493,6 +494,7 @@ eek_renderer_real_render_key_label (EekRenderer *self,
}
pango_font_description_set_size (font, size * priv->scale * scale);
pango_layout_set_font_description (layout, font);
pango_font_description_free (font);
pango_layout_set_text (layout, label, -1);
pango_layout_set_width (layout,
PANGO_SCALE * bounds.width * priv->scale * scale);
@ -617,6 +619,9 @@ eek_renderer_finalize (GObject *object)
{
EekRendererPrivate *priv = EEK_RENDERER_GET_PRIVATE(object);
g_hash_table_destroy (priv->outline_surface_cache);
eek_color_free (priv->foreground);
eek_color_free (priv->background);
pango_font_description_free (priv->font);
G_OBJECT_CLASS (eek_renderer_parent_class)->finalize (object);
}
@ -658,12 +663,6 @@ eek_renderer_class_init (EekRendererClass *klass)
pspec);
}
static void
free_surface (gpointer data)
{
cairo_surface_destroy (data);
}
static void
eek_renderer_init (EekRenderer *self)
{
@ -681,7 +680,7 @@ eek_renderer_init (EekRenderer *self)
g_hash_table_new_full (g_direct_hash,
g_direct_equal,
NULL,
free_surface);
(GDestroyNotify)cairo_surface_destroy);
priv->keyboard_surface = NULL;
priv->symbol_index_changed_handler = 0;
}
@ -941,7 +940,9 @@ eek_renderer_set_foreground (EekRenderer *renderer,
g_return_if_fail (foreground);
priv = EEK_RENDERER_GET_PRIVATE(renderer);
priv->foreground = g_boxed_copy (EEK_TYPE_COLOR, foreground);
if (priv->foreground)
eek_color_free (priv->foreground);
priv->foreground = eek_color_copy (foreground);
}
void
@ -954,7 +955,9 @@ eek_renderer_set_background (EekRenderer *renderer,
g_return_if_fail (background);
priv = EEK_RENDERER_GET_PRIVATE(renderer);
priv->background = g_boxed_copy (EEK_TYPE_COLOR, background);
if (priv->background)
eek_color_free (priv->background);
priv->background = eek_color_copy (background);
}
void