[Swfdec] 3 commits - libswfdec/swfdec_as_number.c libswfdec/swfdec_internal.h libswfdec/swfdec_player_as.c libswfdec/swfdec_player.c test/trace

Pekka Lampila medar at kemper.freedesktop.org
Sun Sep 2 11:34:07 PDT 2007


 libswfdec/swfdec_as_number.c |    2 +-
 libswfdec/swfdec_internal.h  |    2 ++
 libswfdec/swfdec_player.c    |    2 ++
 libswfdec/swfdec_player_as.c |   43 ++++++++++++++-----------------------------
 test/trace/Makefile.am       |    8 ++++++++
 5 files changed, 27 insertions(+), 30 deletions(-)

New commits:
diff-tree aa5947ee972f285b59556ab8888081addd458bfe (from cc6e32e8cbbd672fb0393ef428f65fc7f4b49f43)
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Sat Sep 1 22:08:11 2007 +0300

    LoadVars test was missing from Makefile.am

diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index 22b7a95..484da67 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -575,6 +575,14 @@ EXTRA_DIST = \
 	loadobject-6.swf.trace \
 	loadobject-7.swf \
 	loadobject-7.swf.trace \
+	loadvars.as \
+	loadvars-5.swf \
+	loadvars-5.swf.trace \
+	loadvars-6.swf \
+	loadvars-6.swf.trace \
+	loadvars-7.swf \
+	loadvars-7.swf.trace \
+	loadvars.txt \
 	local.swf \
 	local.swf.trace \
 	lots-of-arguments.as \
diff-tree cc6e32e8cbbd672fb0393ef428f65fc7f4b49f43 (from 613fd1b7aee8c0b58dd4a9061caa8cd2bb899ce2)
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Sat Sep 1 00:36:53 2007 +0300

    Handle making ASnative and ASconstructor childless in nicer way
    
    Create them before swfdec_as_context_startup is ran, so they never get any
    properties.

diff --git a/libswfdec/swfdec_internal.h b/libswfdec/swfdec_internal.h
index 563bd35..f98cd08 100644
--- a/libswfdec/swfdec_internal.h
+++ b/libswfdec/swfdec_internal.h
@@ -62,6 +62,8 @@ SwfdecVideoDecoder *	swfdec_video_decode
 
 /* AS engine setup code */
 
+void			swfdec_player_preinit_global		(SwfdecPlayer *		player,
+								 guint			version);
 void			swfdec_player_init_global		(SwfdecPlayer *		player,
 								 guint			version);
 void			swfdec_movie_color_init_context		(SwfdecPlayer *		player,
diff --git a/libswfdec/swfdec_player.c b/libswfdec/swfdec_player.c
index 5987382..ecdc3cf 100644
--- a/libswfdec/swfdec_player.c
+++ b/libswfdec/swfdec_player.c
@@ -1595,6 +1595,8 @@ swfdec_player_initialize (SwfdecPlayer *
   if (swfdec_player_is_initialized (player))
     return;
   
+  swfdec_player_preinit_global (player, version);
+
   context = SWFDEC_AS_CONTEXT (player);
   swfdec_as_context_startup (context, version);
   /* reset state for initialization */
diff --git a/libswfdec/swfdec_player_as.c b/libswfdec/swfdec_player_as.c
index a492055..2fd543a 100644
--- a/libswfdec/swfdec_player_as.c
+++ b/libswfdec/swfdec_player_as.c
@@ -264,11 +264,23 @@ swfdec_player_object_registerClass (Swfd
   SWFDEC_AS_VALUE_SET_BOOLEAN (rval, TRUE);
 }
 
+// this is ran before swfdec_as_context_startup
+void
+swfdec_player_preinit_global (SwfdecPlayer *player, guint version)
+{
+  SwfdecAsContext *context = SWFDEC_AS_CONTEXT (player);
+
+  // init these two before swfdec_as_context_startup, so they won't get
+  // __proto__ and constructor properties
+  swfdec_as_object_add_function (context->global, SWFDEC_AS_STR_ASnative, 
+      0, swfdec_player_ASnative, 2);
+  swfdec_as_object_add_function (context->global, SWFDEC_AS_STR_ASconstructor,
+      0, swfdec_player_ASconstructor, 2);
+}
+
 void
 swfdec_player_init_global (SwfdecPlayer *player, guint version)
 {
-  SwfdecAsValue val;
-  SwfdecAsObject *object;
   SwfdecAsContext *context = SWFDEC_AS_CONTEXT (player);
 
   swfdec_as_object_add_function (context->Object, SWFDEC_AS_STR_registerClass, 
@@ -277,32 +289,5 @@ swfdec_player_init_global (SwfdecPlayer 
       0, swfdec_player_setInterval, 2);
   swfdec_as_object_add_function (context->global, SWFDEC_AS_STR_clearInterval, 
       0, swfdec_player_clearInterval, 1);
-  swfdec_as_object_add_function (context->global, SWFDEC_AS_STR_ASnative, 
-      0, swfdec_player_ASnative, 2);
-  swfdec_as_object_add_function (context->global, SWFDEC_AS_STR_ASconstructor,
-      0, swfdec_player_ASconstructor, 2);
-
-  // remove __proto__ and constructor from ASnative and ASconstructor
-
-  swfdec_as_object_get_variable (context->global, SWFDEC_AS_STR_ASnative, &val);
-  g_assert (SWFDEC_AS_VALUE_IS_OBJECT (&val));
-  object = SWFDEC_AS_VALUE_GET_OBJECT (&val);
-  swfdec_as_object_unset_variable_flags (object, SWFDEC_AS_STR___proto__,
-      SWFDEC_AS_VARIABLE_PERMANENT);
-  swfdec_as_object_delete_variable (object, SWFDEC_AS_STR___proto__);
-  swfdec_as_object_unset_variable_flags (object, SWFDEC_AS_STR_constructor,
-      SWFDEC_AS_VARIABLE_PERMANENT);
-  swfdec_as_object_delete_variable (object, SWFDEC_AS_STR_constructor);
-
-  swfdec_as_object_get_variable (context->global, SWFDEC_AS_STR_ASconstructor,
-      &val);
-  g_assert (SWFDEC_AS_VALUE_IS_OBJECT (&val));
-  object = SWFDEC_AS_VALUE_GET_OBJECT (&val);
-  swfdec_as_object_unset_variable_flags (object, SWFDEC_AS_STR___proto__,
-      SWFDEC_AS_VARIABLE_PERMANENT);
-  swfdec_as_object_delete_variable (object, SWFDEC_AS_STR___proto__);
-  swfdec_as_object_unset_variable_flags (object, SWFDEC_AS_STR_constructor,
-      SWFDEC_AS_VARIABLE_PERMANENT);
-  swfdec_as_object_delete_variable (object, SWFDEC_AS_STR_constructor);
 }
 
diff-tree 613fd1b7aee8c0b58dd4a9061caa8cd2bb899ce2 (from 7a06bd440379a8307047894e2b476ca6e354556e)
Author: Pekka Lampila <pekka.lampila at iki.fi>
Date:   Sat Sep 1 00:35:09 2007 +0300

    Number valueOf had wrong ASnative number

diff --git a/libswfdec/swfdec_as_number.c b/libswfdec/swfdec_as_number.c
index 9328b26..8a44733 100644
--- a/libswfdec/swfdec_as_number.c
+++ b/libswfdec/swfdec_as_number.c
@@ -84,7 +84,7 @@ swfdec_as_number_toString (SwfdecAsConte
   SWFDEC_AS_VALUE_SET_STRING (ret, s);
 }
 
-SWFDEC_AS_NATIVE (106, 1, swfdec_as_number_valueOf)
+SWFDEC_AS_NATIVE (106, 0, swfdec_as_number_valueOf)
 void
 swfdec_as_number_valueOf (SwfdecAsContext *cx, SwfdecAsObject *object,
     guint argc, SwfdecAsValue *argv, SwfdecAsValue *ret)


More information about the Swfdec mailing list