[Swfdec-commits] 2 commits - swfdec/swfdec_movie.c test/trace

Benjamin Otte company at kemper.freedesktop.org
Fri May 2 02:34:21 PDT 2008


 swfdec/swfdec_movie.c                          |    6 ++++--
 test/trace/Makefile.am                         |    9 +++++++++
 test/trace/destroyed-movie-resolve-5.swf       |binary
 test/trace/destroyed-movie-resolve-6.swf       |binary
 test/trace/destroyed-movie-resolve-7.swf       |binary
 test/trace/destroyed-movie-resolve-7.swf.trace |    2 ++
 test/trace/destroyed-movie-resolve-8.swf       |binary
 test/trace/destroyed-movie-resolve-8.swf.trace |    2 ++
 test/trace/destroyed-movie-resolve.as          |   13 +++++++++++++
 9 files changed, 30 insertions(+), 2 deletions(-)

New commits:
commit 041b515eff91a75a4b532ca774637be956c7e713
Author: Benjamin Otte <otte at gnome.org>
Date:   Fri May 2 11:21:49 2008 +0200

    add test for recent fix

diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index e31d0fa..36b7c9e 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -921,6 +921,15 @@ EXTRA_DIST = \
 	delete-prototypes-7.swf.trace \
 	delete-prototypes-8.swf \
 	delete-prototypes-8.swf.trace \
+	destroyed-movie-resolve-5.swf \
+	destroyed-movie-resolve-5.swf.trace \
+	destroyed-movie-resolve-6.swf \
+	destroyed-movie-resolve-6.swf.trace \
+	destroyed-movie-resolve-7.swf \
+	destroyed-movie-resolve-7.swf.trace \
+	destroyed-movie-resolve-8.swf \
+	destroyed-movie-resolve-8.swf.trace \
+	destroyed-movie-resolve.as  \
 	displacement-map-filter-properties.as \
 	displacement-map-filter-properties-5.swf \
 	displacement-map-filter-properties-5.swf.trace \
diff --git a/test/trace/destroyed-movie-resolve-5.swf b/test/trace/destroyed-movie-resolve-5.swf
new file mode 100644
index 0000000..78ace4b
Binary files /dev/null and b/test/trace/destroyed-movie-resolve-5.swf differ
diff --git a/test/trace/destroyed-movie-resolve-5.swf.trace b/test/trace/destroyed-movie-resolve-5.swf.trace
new file mode 100644
index 0000000..e69de29
diff --git a/test/trace/destroyed-movie-resolve-6.swf b/test/trace/destroyed-movie-resolve-6.swf
new file mode 100644
index 0000000..a949710
Binary files /dev/null and b/test/trace/destroyed-movie-resolve-6.swf differ
diff --git a/test/trace/destroyed-movie-resolve-6.swf.trace b/test/trace/destroyed-movie-resolve-6.swf.trace
new file mode 100644
index 0000000..e69de29
diff --git a/test/trace/destroyed-movie-resolve-7.swf b/test/trace/destroyed-movie-resolve-7.swf
new file mode 100644
index 0000000..4faea10
Binary files /dev/null and b/test/trace/destroyed-movie-resolve-7.swf differ
diff --git a/test/trace/destroyed-movie-resolve-7.swf.trace b/test/trace/destroyed-movie-resolve-7.swf.trace
new file mode 100644
index 0000000..d4f80bf
--- /dev/null
+++ b/test/trace/destroyed-movie-resolve-7.swf.trace
@@ -0,0 +1,2 @@
+undefined
+undefined
diff --git a/test/trace/destroyed-movie-resolve-8.swf b/test/trace/destroyed-movie-resolve-8.swf
new file mode 100644
index 0000000..a8da121
Binary files /dev/null and b/test/trace/destroyed-movie-resolve-8.swf differ
diff --git a/test/trace/destroyed-movie-resolve-8.swf.trace b/test/trace/destroyed-movie-resolve-8.swf.trace
new file mode 100644
index 0000000..d4f80bf
--- /dev/null
+++ b/test/trace/destroyed-movie-resolve-8.swf.trace
@@ -0,0 +1,2 @@
+undefined
+undefined
diff --git a/test/trace/destroyed-movie-resolve.as b/test/trace/destroyed-movie-resolve.as
new file mode 100644
index 0000000..f7b8ac9
--- /dev/null
+++ b/test/trace/destroyed-movie-resolve.as
@@ -0,0 +1,13 @@
+// makeswf -v 7 -s 200x150 -r 1 -o destroyed-movie-resolve.swf destroyed-movie-resolve.as
+
+x = createEmptyMovieClip ("a", 0);
+x.answer = 42;
+
+loader = new MovieClipLoader ();
+loader.loadClip ("destroyed-movie-resolve.as", x);
+
+loader.onLoadComplete = function (m) {
+  trace (x.answer);
+  trace (a.answer);
+  getURL ("fscommand:quit", "");
+};
commit c21385984231689abe1171d81dd4b68b581052a8
Author: Benjamin Otte <otte at gnome.org>
Date:   Fri May 2 11:18:57 2008 +0200

    resolve variables of dead movieclips properly
    
    We used to fail here because we used the wrong object.
    
    FIXME: Check resolve rules for SwfdecMovie subclasses (buttons and textfields)

diff --git a/swfdec/swfdec_movie.c b/swfdec/swfdec_movie.c
index 5502a28..acb971a 100644
--- a/swfdec/swfdec_movie.c
+++ b/swfdec/swfdec_movie.c
@@ -371,8 +371,8 @@ swfdec_movie_do_remove (SwfdecMovie *movie, gboolean destroy)
  * @movie: #SwfdecMovie to remove
  *
  * Removes this movie from its parent. In contrast to swfdec_movie_destroy (),
- * it will definitely cause a removal from the display list, but depending on
- * movie, it might still be possible to reference it from Actionscript.
+ * it might still be possible to reference it from Actionscript, if the movie
+ * queues onUnload event handlers.
  **/
 void
 swfdec_movie_remove (SwfdecMovie *movie)
@@ -1011,6 +1011,7 @@ swfdec_movie_get_variable (SwfdecAsObject *object, SwfdecAsObject *orig,
   movie = swfdec_movie_resolve (movie);
   if (movie == NULL)
     return FALSE;
+  object = SWFDEC_AS_OBJECT (movie);
 
   if (SWFDEC_AS_OBJECT_CLASS (swfdec_movie_parent_class)->get (object, orig, variable, val, flags))
     return TRUE;
@@ -1111,6 +1112,7 @@ swfdec_movie_set_variable (SwfdecAsObject *object, const char *variable,
   movie = swfdec_movie_resolve (movie);
   if (movie == NULL)
     return;
+  object = SWFDEC_AS_OBJECT (movie);
 
   if (swfdec_movie_set_asprop (movie, variable, val))
     return;


More information about the Swfdec-commits mailing list