[Swfdec-commits] swfdec/swfdec_text_format.c

Benjamin Otte company at kemper.freedesktop.org
Wed Jun 4 08:47:37 PDT 2008


 swfdec/swfdec_text_format.c |   14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

New commits:
commit b575529e5101bd86746e5696648f73e89cb60854
Author: Benjamin Otte <otte at gnome.org>
Date:   Wed Jun 4 17:46:36 2008 +0200

    ensure the getTextExtent function exists on all TextFormat objects
    
    even those created by native function and not via new TextFormat()

diff --git a/swfdec/swfdec_text_format.c b/swfdec/swfdec_text_format.c
index ec5706b..0126683 100644
--- a/swfdec/swfdec_text_format.c
+++ b/swfdec/swfdec_text_format.c
@@ -1068,7 +1068,8 @@ swfdec_text_format_copy (const SwfdecTextFormat *copy_from)
 SwfdecAsObject *
 swfdec_text_format_new_no_properties (SwfdecAsContext *context)
 {
-  SwfdecAsObject *ret;
+  SwfdecAsObject *tmp, *ret;
+  SwfdecAsFunction *function;
   SwfdecAsValue val;
 
   g_return_val_if_fail (SWFDEC_IS_AS_CONTEXT (context), NULL);
@@ -1087,6 +1088,17 @@ swfdec_text_format_new_no_properties (SwfdecAsContext *context)
     return ret;
   swfdec_as_object_set_constructor (ret, SWFDEC_AS_VALUE_GET_OBJECT (&val));
 
+  // FIXME: Need better way to create function without prototype/constructor
+  tmp = context->Function;
+  context->Function = NULL;
+  function = swfdec_as_native_function_new (context, SWFDEC_AS_STR_getTextExtent,
+      swfdec_text_format_getTextExtent, 0, NULL);
+  context->Function = tmp;
+  if (function != NULL) {
+    SWFDEC_AS_VALUE_SET_OBJECT (&val, SWFDEC_AS_OBJECT (function));
+    swfdec_as_object_set_variable (ret, SWFDEC_AS_STR_getTextExtent, &val);
+  }
+
   return ret;
 }
 


More information about the Swfdec-commits mailing list