diff options
author | Behdad Esfahbod <behdad@gnome.org> | 2008-11-28 17:34:57 +0000 |
---|---|---|
committer | Behdad Esfahbod <behdad@src.gnome.org> | 2008-11-28 17:34:57 +0000 |
commit | 74cc07c44afd2879418389cce57a4129b60d61e6 (patch) | |
tree | 0183a27ad517826d064115cf76ba62a0b54033f4 | |
parent | 0a189cf8c9d4489a30bc1a5f0f4ce62bcc8c9a5d (diff) | |
download | pango-74cc07c44afd2879418389cce57a4129b60d61e6.tar.gz |
Bug 562574 – Pangocariowin32 is leaking every cairo font it ever creates
2008-11-28 Behdad Esfahbod <behdad@gnome.org>
Bug 562574 – Pangocariowin32 is leaking every cairo font it ever
creates
* pango/pangocairo-atsuifont.c (pango_cairo_atsui_font_finalize):
* pango/pangocairo-win32font.c (pango_cairo_win32_font_finalize):
Finalize shared pangocairo font resources. Oops!
* pango/pangocairo-font.c (_pango_cairo_font_private_finalize):
Protect against multiple calls to finalize. This is practiced by the
pangocairo-fcfont when a font is shutdown and then finalized.
svn path=/trunk/; revision=2746
-rw-r--r-- | ChangeLog | 13 | ||||
-rw-r--r-- | pango/pangocairo-atsuifont.c | 6 | ||||
-rw-r--r-- | pango/pangocairo-fcfont.c | 4 | ||||
-rw-r--r-- | pango/pangocairo-font.c | 4 | ||||
-rw-r--r-- | pango/pangocairo-win32font.c | 6 |
5 files changed, 29 insertions, 4 deletions
@@ -1,3 +1,16 @@ +2008-11-28 Behdad Esfahbod <behdad@gnome.org> + + Bug 562574 – Pangocariowin32 is leaking every cairo font it ever + creates + + * pango/pangocairo-atsuifont.c (pango_cairo_atsui_font_finalize): + * pango/pangocairo-win32font.c (pango_cairo_win32_font_finalize): + Finalize shared pangocairo font resources. Oops! + + * pango/pangocairo-font.c (_pango_cairo_font_private_finalize): + Protect against multiple calls to finalize. This is practiced by the + pangocairo-fcfont when a font is shutdown and then finalized. + 2008-11-26 Behdad Esfahbod <behdad@gnome.org> * examples/cairotwisted.c (parametrize_path), (point_on_path): diff --git a/pango/pangocairo-atsuifont.c b/pango/pangocairo-atsuifont.c index 3a08df62..7706fbf8 100644 --- a/pango/pangocairo-atsuifont.c +++ b/pango/pangocairo-atsuifont.c @@ -174,6 +174,10 @@ pango_cairo_atsui_font_describe_absolute (PangoFont *font) static void pango_cairo_atsui_font_finalize (GObject *object) { + PangoCairoATSUIFont *cafont = (PangoCairoATSUIFont *) object; + + _pango_cairo_font_private_finalize (&cafont->cf_priv); + G_OBJECT_CLASS (pango_cairo_atsui_font_parent_class)->finalize (object); } @@ -191,7 +195,7 @@ pango_cairo_atsui_font_class_init (PangoCairoATSUIFontClass *class) } static void -pango_cairo_atsui_font_init (PangoCairoATSUIFont *cafont) +pango_cairo_atsui_font_init (PangoCairoATSUIFont *cafont G_GNUC_UNUSED) { } diff --git a/pango/pangocairo-fcfont.c b/pango/pangocairo-fcfont.c index fb519b79..7cab98f3 100644 --- a/pango/pangocairo-fcfont.c +++ b/pango/pangocairo-fcfont.c @@ -88,7 +88,7 @@ G_DEFINE_TYPE_WITH_CODE (PangoCairoFcFont, pango_cairo_fc_font, PANGO_TYPE_FC_FO static void pango_cairo_fc_font_finalize (GObject *object) { - PangoCairoFcFont *cffont = (PangoCairoFcFont *) (object); + PangoCairoFcFont *cffont = (PangoCairoFcFont *) object; _pango_cairo_font_private_finalize (&cffont->cf_priv); @@ -162,7 +162,7 @@ pango_cairo_fc_font_class_init (PangoCairoFcFontClass *class) } static void -pango_cairo_fc_font_init (PangoCairoFcFont *cffont) +pango_cairo_fc_font_init (PangoCairoFcFont *cffont G_GNUC_UNUSED) { } diff --git a/pango/pangocairo-font.c b/pango/pangocairo-font.c index 15757eee..11cb267b 100644 --- a/pango/pangocairo-font.c +++ b/pango/pangocairo-font.c @@ -560,14 +560,18 @@ _pango_cairo_font_private_finalize (PangoCairoFontPrivate *cf_priv) if (cf_priv->scaled_font) cairo_scaled_font_destroy (cf_priv->scaled_font); + cf_priv->scaled_font = NULL; _pango_cairo_font_hex_box_info_destroy (cf_priv->hbi); + cf_priv->hbi = NULL; if (cf_priv->glyph_extents_cache) g_free (cf_priv->glyph_extents_cache); + cf_priv->glyph_extents_cache = NULL; g_slist_foreach (cf_priv->metrics_by_lang, (GFunc)free_metrics_info, NULL); g_slist_free (cf_priv->metrics_by_lang); + cf_priv->metrics_by_lang = NULL; } gboolean diff --git a/pango/pangocairo-win32font.c b/pango/pangocairo-win32font.c index 4f0ec3d7..875f9526 100644 --- a/pango/pangocairo-win32font.c +++ b/pango/pangocairo-win32font.c @@ -164,6 +164,10 @@ pango_cairo_win32_font_create_metrics_for_context (PangoCairoFont *font, static void pango_cairo_win32_font_finalize (GObject *object) { + PangoCairoWin32Font *cwfont = (PangoCairoWin32Font *) object; + + _pango_cairo_font_private_finalize (&cwfont->cf_priv); + G_OBJECT_CLASS (pango_cairo_win32_font_parent_class)->finalize (object); } @@ -225,7 +229,7 @@ pango_cairo_win32_font_class_init (PangoCairoWin32FontClass *class) } static void -pango_cairo_win32_font_init (PangoCairoWin32Font *cwfont) +pango_cairo_win32_font_init (PangoCairoWin32Font *cwfont G_GNUC_UNUSED) { } |