[pango] Port PangoCoreTextFont to use GWeakRef



commit a2b560ab7d7cba57a04a3e9d30ab9ecd50c473e3
Author: John Ralls <jralls ceridwen us>
Date:   Tue Sep 25 11:40:05 2012 -0700

    Port PangoCoreTextFont to use GWeakRef
    
    For its PangoCoreTextFontMap* member.

 pango/pangocoretext.c |   17 +++++++++--------
 1 files changed, 9 insertions(+), 8 deletions(-)
---
diff --git a/pango/pangocoretext.c b/pango/pangocoretext.c
index ee74393..36bcd82 100644
--- a/pango/pangocoretext.c
+++ b/pango/pangocoretext.c
@@ -45,10 +45,12 @@ pango_core_text_font_finalize (GObject *object)
 {
   PangoCoreTextFont *ctfont = (PangoCoreTextFont *)object;
   PangoCoreTextFontPrivate *priv = ctfont->priv;
-
-  g_assert (priv->fontmap != NULL);
-  g_object_remove_weak_pointer (G_OBJECT (priv->fontmap), (gpointer *) (gpointer) &priv->fontmap);
-  priv->fontmap = NULL;
+  PangoCoreTextFontMap* fontmap = g_weak_ref_get ((GWeakRef *)&priv->fontmap);
+  if (fontmap)
+    {
+      g_weak_ref_clear ((GWeakRef *)&priv->fontmap);
+      g_object_unref (fontmap);
+    }
 
   if (priv->coverage)
     pango_coverage_unref (priv->coverage);
@@ -140,7 +142,7 @@ static PangoFontMap *
 pango_core_text_font_get_font_map (PangoFont *font)
 {
   PangoCoreTextFont *ctfont = (PangoCoreTextFont *)font;
-
+  /* FIXME: Not thread safe! */
   return ctfont->priv->fontmap;
 }
 
@@ -174,9 +176,8 @@ _pango_core_text_font_set_font_map (PangoCoreTextFont    *font,
 {
   PangoCoreTextFontPrivate *priv = font->priv;
 
-  g_assert (priv->fontmap == NULL);
-  priv->fontmap = (PangoFontMap *) fontmap;
-  g_object_add_weak_pointer (G_OBJECT (priv->fontmap), (gpointer *) (gpointer) &priv->fontmap);
+  g_return_if_fail (priv->fontmap == NULL);
+  g_weak_ref_set((GWeakRef *) &priv->fontmap, fontmap);
 }
 
 void



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]