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

Benjamin Otte company at kemper.freedesktop.org
Mon Nov 3 06:39:22 PST 2008


 swfdec/swfdec_as_movie_value.c              |   13 ++++--
 test/trace/Makefile.am                      |    9 ++++
 test/trace/movieclip-references-5.swf       |binary
 test/trace/movieclip-references-5.swf.trace |   59 ++++++++++++++++++++++++++++
 test/trace/movieclip-references-6.swf       |binary
 test/trace/movieclip-references-6.swf.trace |   59 ++++++++++++++++++++++++++++
 test/trace/movieclip-references-7.swf       |binary
 test/trace/movieclip-references-7.swf.trace |   59 ++++++++++++++++++++++++++++
 test/trace/movieclip-references-8.swf       |binary
 test/trace/movieclip-references-8.swf.trace |   59 ++++++++++++++++++++++++++++
 test/trace/movieclip-references.as          |   43 ++++++++++++++++++++
 11 files changed, 298 insertions(+), 3 deletions(-)

New commits:
commit 0aa90eac079dda277541e247341402174efc4c77
Author: Benjamin Otte <otte at gnome.org>
Date:   Mon Nov 3 15:37:53 2008 +0100

    add a test for movieclip references

diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index 27628dd..bd8c091 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -2286,6 +2286,15 @@ EXTRA_DIST = \
 	movieclip-property-priorities-8.swf \
 	movieclip-property-priorities-8.swf.trace \
 	movieclip-property-priorities.as \
+	movieclip-references-5.swf \
+	movieclip-references-5.swf.trace \
+	movieclip-references-6.swf \
+	movieclip-references-6.swf.trace \
+	movieclip-references-7.swf \
+	movieclip-references-7.swf.trace \
+	movieclip-references-8.swf \
+	movieclip-references-8.swf.trace \
+	movieclip-references.as \
 	movieclip-set-prototype.c \
 	movieclip-set-prototype-5.swf \
 	movieclip-set-prototype-5.swf.trace \
diff --git a/test/trace/movieclip-references-5.swf b/test/trace/movieclip-references-5.swf
new file mode 100644
index 0000000..c0758fe
Binary files /dev/null and b/test/trace/movieclip-references-5.swf differ
diff --git a/test/trace/movieclip-references-5.swf.trace b/test/trace/movieclip-references-5.swf.trace
new file mode 100644
index 0000000..b513ae3
--- /dev/null
+++ b/test/trace/movieclip-references-5.swf.trace
@@ -0,0 +1,59 @@
+2: begin
+1: begin
+0: begin
+0: middle
+0: end
+0: [],[],[]
+1: middle
+0: begin
+0: middle
+0: end
+0: [],[],[],[]
+1: end
+0: begin
+0: middle
+0: end
+0: [],[],[],[],[]
+1: [],[],[],[],[]
+2: middle
+1: begin
+0: begin
+0: middle
+0: end
+0: [],[],[],[],[],[],[]
+1: middle
+0: begin
+0: middle
+0: end
+0: [],[],[],[],[],[],[],[]
+1: end
+0: begin
+0: middle
+0: end
+0: [],[],[],[],[],[],[],[],[]
+1: [],[],[],[],[],[],[],[],[]
+2: end
+1: begin
+0: begin
+0: middle
+0: end
+0: [],[],[],[],[],[],[],[],[],[],[]
+1: middle
+0: begin
+0: middle
+0: end
+0: [],[],[],[],[],[],[],[],[],[],[],[]
+1: end
+0: begin
+0: middle
+0: end
+0: [],[],[],[],[],[],[],[],[],[],[],[],[]
+1: [],[],[],[],[],[],[],[],[],[],[],[],[]
+2: [],[],[],[],[],[],[],[],[],[],[],[],[]
+[],[],[],[],[],[],[],[],[],[],[],[],[]
+[],[],[],[],[],[],[],[],[],[],[],[],[]
+[],[],[],[],[],[],[],[],[],[],[],[],[]
+[],[],[],[],[],[],[],[],[],[],[],[],[]
+[],[],[],[],[],[],[],[],[],[],[],[],[]
+[],[],[],[],[],[],[],[],[],[],[],[],[]
+[],[],[],[],[],[],[],[],[],[],[],[],[]
diff --git a/test/trace/movieclip-references-6.swf b/test/trace/movieclip-references-6.swf
new file mode 100644
index 0000000..6527c59
Binary files /dev/null and b/test/trace/movieclip-references-6.swf differ
diff --git a/test/trace/movieclip-references-6.swf.trace b/test/trace/movieclip-references-6.swf.trace
new file mode 100644
index 0000000..b513ae3
--- /dev/null
+++ b/test/trace/movieclip-references-6.swf.trace
@@ -0,0 +1,59 @@
+2: begin
+1: begin
+0: begin
+0: middle
+0: end
+0: [],[],[]
+1: middle
+0: begin
+0: middle
+0: end
+0: [],[],[],[]
+1: end
+0: begin
+0: middle
+0: end
+0: [],[],[],[],[]
+1: [],[],[],[],[]
+2: middle
+1: begin
+0: begin
+0: middle
+0: end
+0: [],[],[],[],[],[],[]
+1: middle
+0: begin
+0: middle
+0: end
+0: [],[],[],[],[],[],[],[]
+1: end
+0: begin
+0: middle
+0: end
+0: [],[],[],[],[],[],[],[],[]
+1: [],[],[],[],[],[],[],[],[]
+2: end
+1: begin
+0: begin
+0: middle
+0: end
+0: [],[],[],[],[],[],[],[],[],[],[]
+1: middle
+0: begin
+0: middle
+0: end
+0: [],[],[],[],[],[],[],[],[],[],[],[]
+1: end
+0: begin
+0: middle
+0: end
+0: [],[],[],[],[],[],[],[],[],[],[],[],[]
+1: [],[],[],[],[],[],[],[],[],[],[],[],[]
+2: [],[],[],[],[],[],[],[],[],[],[],[],[]
+[],[],[],[],[],[],[],[],[],[],[],[],[]
+[],[],[],[],[],[],[],[],[],[],[],[],[]
+[],[],[],[],[],[],[],[],[],[],[],[],[]
+[],[],[],[],[],[],[],[],[],[],[],[],[]
+[],[],[],[],[],[],[],[],[],[],[],[],[]
+[],[],[],[],[],[],[],[],[],[],[],[],[]
+[],[],[],[],[],[],[],[],[],[],[],[],[]
diff --git a/test/trace/movieclip-references-7.swf b/test/trace/movieclip-references-7.swf
new file mode 100644
index 0000000..2e2abf7
Binary files /dev/null and b/test/trace/movieclip-references-7.swf differ
diff --git a/test/trace/movieclip-references-7.swf.trace b/test/trace/movieclip-references-7.swf.trace
new file mode 100644
index 0000000..3965c24
--- /dev/null
+++ b/test/trace/movieclip-references-7.swf.trace
@@ -0,0 +1,59 @@
+2: begin
+1: begin
+0: begin
+0: middle
+0: end
+0: [_level0.a],[_level0.a.a],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a]
+1: middle
+0: begin
+0: middle
+0: end
+0: [_level0.a],[_level0.a.b,_level0.a.b],[,,],[_level0.a.b.a,_level0.a.b.a,_level0.a.b.a]
+1: end
+0: begin
+0: middle
+0: end
+0: [_level0.a],[_level0.a.a,_level0.a.a,_level0.a.a],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a]
+1: [_level0.a],[_level0.a.a,_level0.a.a,_level0.a.a],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a]
+2: middle
+1: begin
+0: begin
+0: middle
+0: end
+0: [_level0.b,_level0.b],[,,],[,,],[,,],[,,],[_level0.b.a],[_level0.b.a.a,_level0.b.a.a,_level0.b.a.a]
+1: middle
+0: begin
+0: middle
+0: end
+0: [_level0.b,_level0.b],[,,],[,,],[,,],[,,],[_level0.b.b,_level0.b.b],[,,],[_level0.b.b.a,_level0.b.b.a,_level0.b.b.a]
+1: end
+0: begin
+0: middle
+0: end
+0: [_level0.b,_level0.b],[,,],[,,],[,,],[,,],[_level0.b.a,_level0.b.a,_level0.b.a],[_level0.b.a.a,_level0.b.a.a,_level0.b.a.a],[,,],[_level0.b.a.a,_level0.b.a.a,_level0.b.a.a]
+1: [_level0.b,_level0.b],[,,],[,,],[,,],[,,],[_level0.b.a,_level0.b.a,_level0.b.a],[_level0.b.a.a,_level0.b.a.a,_level0.b.a.a],[,,],[_level0.b.a.a,_level0.b.a.a,_level0.b.a.a]
+2: end
+1: begin
+0: begin
+0: middle
+0: end
+0: [_level0.a,_level0.a,_level0.a],[_level0.a.a,_level0.a.a,_level0.a.a],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[,,],[,,],[,,],[_level0.a.a],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a]
+1: middle
+0: begin
+0: middle
+0: end
+0: [_level0.a,_level0.a,_level0.a],[,,],[,,],[_level0.a.b.a,_level0.a.b.a,_level0.a.b.a],[,,],[,,],[,,],[,,],[,,],[_level0.a.b,_level0.a.b],[,,],[_level0.a.b.a,_level0.a.b.a,_level0.a.b.a]
+1: end
+0: begin
+0: middle
+0: end
+0: [_level0.a,_level0.a,_level0.a],[_level0.a.a,_level0.a.a,_level0.a.a],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[,,],[,,],[,,],[_level0.a.a,_level0.a.a,_level0.a.a],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a]
+1: [_level0.a,_level0.a,_level0.a],[_level0.a.a,_level0.a.a,_level0.a.a],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[,,],[,,],[,,],[_level0.a.a,_level0.a.a,_level0.a.a],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a]
+2: [_level0.a,_level0.a,_level0.a],[_level0.a.a,_level0.a.a,_level0.a.a],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[,,],[,,],[,,],[_level0.a.a,_level0.a.a,_level0.a.a],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a]
+[_level0.a,_level0.a,_level0.a],[_level0.a.a,_level0.a.a,_level0.a.a],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[,,],[,,],[,,],[_level0.a.a,_level0.a.a,_level0.a.a],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a]
+[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,]
+[_level0.a,_level0.a,_level0.a],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,]
+[_level0.a,_level0.a,_level0.a],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,]
+[_level0.a,_level0.a,_level0.a],[_level0.a.a,_level0.a.a,_level0.a.a],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[_level0.a.a,_level0.a.a,_level0.a.a],[,,],[,,],[,,]
+[_level0.a,_level0.a,_level0.a],[_level0.a.a,_level0.a.a,_level0.a.a],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[,,],[,,],[,,],[_level0.a.a,_level0.a.a,_level0.a.a],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a]
+[_level0.a,_level0.a,_level0.a],[,,],[,,],[_level0.a.b.a,_level0.a.b.a,_level0.a.b.a],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[_level0.a.b.a,_level0.a.b.a,_level0.a.b.a],[,,]
diff --git a/test/trace/movieclip-references-8.swf b/test/trace/movieclip-references-8.swf
new file mode 100644
index 0000000..d4ca4e2
Binary files /dev/null and b/test/trace/movieclip-references-8.swf differ
diff --git a/test/trace/movieclip-references-8.swf.trace b/test/trace/movieclip-references-8.swf.trace
new file mode 100644
index 0000000..3965c24
--- /dev/null
+++ b/test/trace/movieclip-references-8.swf.trace
@@ -0,0 +1,59 @@
+2: begin
+1: begin
+0: begin
+0: middle
+0: end
+0: [_level0.a],[_level0.a.a],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a]
+1: middle
+0: begin
+0: middle
+0: end
+0: [_level0.a],[_level0.a.b,_level0.a.b],[,,],[_level0.a.b.a,_level0.a.b.a,_level0.a.b.a]
+1: end
+0: begin
+0: middle
+0: end
+0: [_level0.a],[_level0.a.a,_level0.a.a,_level0.a.a],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a]
+1: [_level0.a],[_level0.a.a,_level0.a.a,_level0.a.a],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a]
+2: middle
+1: begin
+0: begin
+0: middle
+0: end
+0: [_level0.b,_level0.b],[,,],[,,],[,,],[,,],[_level0.b.a],[_level0.b.a.a,_level0.b.a.a,_level0.b.a.a]
+1: middle
+0: begin
+0: middle
+0: end
+0: [_level0.b,_level0.b],[,,],[,,],[,,],[,,],[_level0.b.b,_level0.b.b],[,,],[_level0.b.b.a,_level0.b.b.a,_level0.b.b.a]
+1: end
+0: begin
+0: middle
+0: end
+0: [_level0.b,_level0.b],[,,],[,,],[,,],[,,],[_level0.b.a,_level0.b.a,_level0.b.a],[_level0.b.a.a,_level0.b.a.a,_level0.b.a.a],[,,],[_level0.b.a.a,_level0.b.a.a,_level0.b.a.a]
+1: [_level0.b,_level0.b],[,,],[,,],[,,],[,,],[_level0.b.a,_level0.b.a,_level0.b.a],[_level0.b.a.a,_level0.b.a.a,_level0.b.a.a],[,,],[_level0.b.a.a,_level0.b.a.a,_level0.b.a.a]
+2: end
+1: begin
+0: begin
+0: middle
+0: end
+0: [_level0.a,_level0.a,_level0.a],[_level0.a.a,_level0.a.a,_level0.a.a],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[,,],[,,],[,,],[_level0.a.a],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a]
+1: middle
+0: begin
+0: middle
+0: end
+0: [_level0.a,_level0.a,_level0.a],[,,],[,,],[_level0.a.b.a,_level0.a.b.a,_level0.a.b.a],[,,],[,,],[,,],[,,],[,,],[_level0.a.b,_level0.a.b],[,,],[_level0.a.b.a,_level0.a.b.a,_level0.a.b.a]
+1: end
+0: begin
+0: middle
+0: end
+0: [_level0.a,_level0.a,_level0.a],[_level0.a.a,_level0.a.a,_level0.a.a],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[,,],[,,],[,,],[_level0.a.a,_level0.a.a,_level0.a.a],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a]
+1: [_level0.a,_level0.a,_level0.a],[_level0.a.a,_level0.a.a,_level0.a.a],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[,,],[,,],[,,],[_level0.a.a,_level0.a.a,_level0.a.a],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a]
+2: [_level0.a,_level0.a,_level0.a],[_level0.a.a,_level0.a.a,_level0.a.a],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[,,],[,,],[,,],[_level0.a.a,_level0.a.a,_level0.a.a],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a]
+[_level0.a,_level0.a,_level0.a],[_level0.a.a,_level0.a.a,_level0.a.a],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[,,],[,,],[,,],[_level0.a.a,_level0.a.a,_level0.a.a],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a]
+[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,]
+[_level0.a,_level0.a,_level0.a],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,]
+[_level0.a,_level0.a,_level0.a],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[,,]
+[_level0.a,_level0.a,_level0.a],[_level0.a.a,_level0.a.a,_level0.a.a],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[_level0.a.a,_level0.a.a,_level0.a.a],[,,],[,,],[,,]
+[_level0.a,_level0.a,_level0.a],[_level0.a.a,_level0.a.a,_level0.a.a],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[,,],[,,],[,,],[_level0.a.a,_level0.a.a,_level0.a.a],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a],[,,],[_level0.a.a.a,_level0.a.a.a,_level0.a.a.a]
+[_level0.a,_level0.a,_level0.a],[,,],[,,],[_level0.a.b.a,_level0.a.b.a,_level0.a.b.a],[,,],[,,],[,,],[,,],[,,],[,,],[,,],[_level0.a.b.a,_level0.a.b.a,_level0.a.b.a],[,,]
diff --git a/test/trace/movieclip-references.as b/test/trace/movieclip-references.as
new file mode 100644
index 0000000..722f3bd
--- /dev/null
+++ b/test/trace/movieclip-references.as
@@ -0,0 +1,43 @@
+// makeswf -v 7 -s 200x150 -r 1 -o movieclip-references.swf movieclip-references.as
+
+function create (mc, array, depth) {
+  if (depth == 0)
+    return;
+  depth--;
+  var o = [];
+  o.toString = function () { return "[" + Array.prototype.toString.apply (this) + "]"; };
+  array.push (o);
+  mc.createEmptyMovieClip ("a", 0);
+  o.push (mc.a);
+  trace (depth + ": begin");
+  create (mc.a, array, depth);
+  mc.a._name = "b";
+  o.push (mc.b);
+  trace (depth + ": middle");
+  create (mc.b, array, depth);
+  mc.b._name = "a";
+  o.push (mc.a);
+  trace (depth + ": end");
+  create (mc.a, array, depth);
+  trace (depth + ": " + array);
+};
+
+array = [];
+create (this, array, 3);
+trace (array);
+a.removeMovieClip ();
+trace (array);
+createEmptyMovieClip ("a", 0);
+trace (array);
+createEmptyMovieClip ("b", 1);
+trace (array);
+a.createEmptyMovieClip ("b", 0);
+a.b._name = "a";
+trace (array);
+a.a.createEmptyMovieClip ("a", 0);
+trace (array);
+a.a._name = "b";
+trace (array);
+
+
+getURL ("fscommand:quit", "");
commit e81f93b5e1325fa2b8820afed6a5eb0db5417e78
Author: Benjamin Otte <otte at gnome.org>
Date:   Mon Nov 3 15:31:48 2008 +0100

    construct the movie reference using the _current_ names

diff --git a/swfdec/swfdec_as_movie_value.c b/swfdec/swfdec_as_movie_value.c
index 776b395..8c351b6 100644
--- a/swfdec/swfdec_as_movie_value.c
+++ b/swfdec/swfdec_as_movie_value.c
@@ -35,7 +35,7 @@ swfdec_as_movie_value_new (SwfdecMovie *movie, const char *name)
 {
   SwfdecAsMovieValue *val, *parent;
   SwfdecAsContext *context;
-  guint n_names;
+  guint i, n_names;
 
   g_assert (SWFDEC_IS_MOVIE (movie));
   g_assert (name != NULL);
@@ -49,9 +49,16 @@ swfdec_as_movie_value_new (SwfdecMovie *movie, const char *name)
   val->player = SWFDEC_PLAYER (context);
   val->movie = movie;
   val->n_names = n_names;
-  if (parent)
-    memcpy (val->names, parent->names, sizeof (const char *) * parent->n_names);
   val->names[n_names - 1] = name;
+  movie = movie->parent;
+  for (i = n_names - 2; movie; i--) {
+    if (movie->nameasdf != SWFDEC_AS_STR_EMPTY) {
+      val->names[i] = movie->nameasdf;
+    } else {
+      val->names[i] = movie->as_value->names[i];
+    };
+    movie = movie->parent; 
+  }
 
   SWFDEC_AS_GCABLE_SET_NEXT (val, context->movies);
   context->movies = val;


More information about the Swfdec-commits mailing list