[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