[clutter/clutter-1.14] text: Clean up the set_font_description_internal() semantics



commit db5cfe4e0cb6d3d836828e812296b027d4b14dcc
Author: Emmanuele Bassi <ebassi gnome org>
Date:   Mon Mar 4 13:02:44 2013 +0000

    text: Clean up the set_font_description_internal() semantics
    
    The current semantics are ridiculous, and clearly a case of (mistaken)
    premature optimization. All setters should copy, not transfer ownership.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=695119

 clutter/clutter-text.c |   15 +++++++--------
 1 files changed, 7 insertions(+), 8 deletions(-)
---
diff --git a/clutter/clutter-text.c b/clutter/clutter-text.c
index 9f50263..8323cc0 100644
--- a/clutter/clutter-text.c
+++ b/clutter/clutter-text.c
@@ -555,8 +555,7 @@ clutter_text_dirty_cache (ClutterText *text)
  * @desc: a #PangoFontDescription
  *
  * Sets @desc as the font description to be used by the #ClutterText
- * actor. The font description ownership is transferred to @self so
- * the #PangoFontDescription must not be freed after this function
+ * actor. The #PangoFontDescription is copied.
  *
  * This function will also set the :font-name field as a side-effect
  *
@@ -576,7 +575,7 @@ clutter_text_set_font_description_internal (ClutterText          *self,
   if (priv->font_desc != NULL)
     pango_font_description_free (priv->font_desc);
 
-  priv->font_desc = desc;
+  priv->font_desc = pango_font_description_copy (desc);
 
   /* update the font name string we use */
   g_free (priv->font_name);
@@ -618,6 +617,7 @@ clutter_text_settings_changed_cb (ClutterText *text)
       font_desc = pango_font_description_from_string (font_name);
       clutter_text_set_font_description_internal (text, font_desc);
 
+      pango_font_description_free (font_desc);
       g_free (font_name);
     }
 
@@ -4917,12 +4917,9 @@ void
 clutter_text_set_font_description (ClutterText          *self,
                                    PangoFontDescription *font_desc)
 {
-  PangoFontDescription *copy;
-
   g_return_if_fail (CLUTTER_IS_TEXT (self));
 
-  copy = pango_font_description_copy (font_desc);
-  clutter_text_set_font_description_internal (self, copy);
+  clutter_text_set_font_description_internal (self, font_desc);
 }
 
 /**
@@ -5020,7 +5017,7 @@ clutter_text_set_font_name (ClutterText *self,
     goto out;
 
   desc = pango_font_description_from_string (font_name);
-  if (!desc)
+  if (desc == NULL)
     {
       g_warning ("Attempting to create a PangoFontDescription for "
                 "font name '%s', but failed.",
@@ -5034,6 +5031,8 @@ clutter_text_set_font_name (ClutterText *self,
 
   g_object_notify_by_pspec (G_OBJECT (self), obj_props[PROP_FONT_NAME]);
 
+  pango_font_description_free (desc);
+
 out:
   if (is_default_font)
     g_free ((gchar *) font_name);


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