[Swfdec-commits] 3 commits - swfdec/swfdec_actor.h swfdec/swfdec_movie_asprops.c swfdec/swfdec_movie.h swfdec/swfdec_player.c swfdec/swfdec_resource.c test/trace
Benjamin Otte
company at kemper.freedesktop.org
Mon Mar 31 14:53:14 PDT 2008
swfdec/swfdec_actor.h | 2
swfdec/swfdec_movie.h | 6
swfdec/swfdec_movie_asprops.c | 112 ++++++++++--
swfdec/swfdec_player.c | 1
swfdec/swfdec_resource.c | 1
test/trace/Makefile.am | 9 +
test/trace/focusrect-values-5.swf |binary
test/trace/focusrect-values-5.swf.trace | 286 +++++++++++++++++++++++++++++++
test/trace/focusrect-values-6.swf |binary
test/trace/focusrect-values-6.swf.trace | 287 ++++++++++++++++++++++++++++++++
test/trace/focusrect-values-7.swf |binary
test/trace/focusrect-values-7.swf.trace | 287 ++++++++++++++++++++++++++++++++
test/trace/focusrect-values-8.swf |binary
test/trace/focusrect-values-8.swf.trace | 287 ++++++++++++++++++++++++++++++++
test/trace/focusrect-values.as | 19 ++
15 files changed, 1276 insertions(+), 21 deletions(-)
New commits:
commit 2c8040d431fc40833694eff546237041b3735122
Author: Benjamin Otte <otte at gnome.org>
Date: Mon Mar 31 23:50:34 2008 +0200
add a test for focusrect values
diff --git a/test/trace/Makefile.am b/test/trace/Makefile.am
index 7e44ea6..9d392d1 100644
--- a/test/trace/Makefile.am
+++ b/test/trace/Makefile.am
@@ -1053,6 +1053,15 @@ EXTRA_DIST = \
file-reference-list-properties-7.swf.trace \
file-reference-list-properties-8.swf \
file-reference-list-properties-8.swf.trace \
+ focusrect-values-5.swf \
+ focusrect-values-5.swf.trace \
+ focusrect-values-6.swf \
+ focusrect-values-6.swf.trace \
+ focusrect-values-7.swf \
+ focusrect-values-7.swf.trace \
+ focusrect-values-8.swf \
+ focusrect-values-8.swf.trace \
+ focusrect-values.as \
foreach-propflags.as \
foreach-propflags-5.swf \
foreach-propflags-5.swf.trace \
diff --git a/test/trace/focusrect-values-5.swf b/test/trace/focusrect-values-5.swf
new file mode 100644
index 0000000..5bada6d
Binary files /dev/null and b/test/trace/focusrect-values-5.swf differ
diff --git a/test/trace/focusrect-values-5.swf.trace b/test/trace/focusrect-values-5.swf.trace
new file mode 100644
index 0000000..f597464
--- /dev/null
+++ b/test/trace/focusrect-values-5.swf.trace
@@ -0,0 +1,286 @@
+valueOf called
+toString called
+toString called with
+valueOf called with
+0: valueOf!
+1: valueOf!
+2: valueOf!
+3: valueOf!
+4: valueOf!
+5: valueOf!
+6: valueOf!
+7: valueOf!
+8: valueOf!
+9: valueOf!
+10: valueOf!
+11: valueOf!
+12: valueOf!
+13: valueOf!
+14: valueOf!
+15: valueOf!
+16: valueOf!
+17: valueOf!
+18: valueOf!
+19: valueOf!
+20: valueOf!
+21: valueOf!
+22: valueOf!
+22: toString!
+23: valueOf!
+23: toString!
+24: valueOf!
+24: toString!
+25: valueOf!
+26: valueOf!
+26: toString!
+27: valueOf!
+27: toString!
+28: valueOf!
+28: toString!
+29: valueOf!
+29: toString!
+initial: / / 1
+(0) (undefined): / / 1
+(0) (undefined)[2]: / / 0
+(0) (undefined)[3]: / / 1
+(1) null (null): / / 1
+(1) null (null)[2]: / / 0
+(1) null (null)[3]: / / 1
+(2) true (boolean): / / 1
+(2) true (boolean)[2]: / / 1
+(2) true (boolean)[3]: / / 1
+(3) false (boolean): / / 1
+(3) false (boolean)[2]: / / 0
+(3) false (boolean)[3]: / / 0
+(4) 0 (number): / / 0
+(4) 0 (number)[2]: / / 0
+(4) 0 (number)[3]: / / 0
+(5) 1 (number): / / 0
+(5) 1 (number)[2]: / / 1
+(5) 1 (number)[3]: / / 1
+(6) 0.5 (number): / / 1
+(6) 0.5 (number)[2]: / / 1
+(6) 0.5 (number)[3]: / / 1
+(7) -1 (number): / / 1
+(7) -1 (number)[2]: / / 1
+(7) -1 (number)[3]: / / 1
+(8) -0.5 (number): / / 1
+(8) -0.5 (number)[2]: / / 1
+(8) -0.5 (number)[3]: / / 1
+(9) Infinity (number): / / 1
+(9) Infinity (number)[2]: / / 1
+(9) Infinity (number)[3]: / / 1
+(10) -Infinity (number): / / 1
+(10) -Infinity (number)[2]: / / 1
+(10) -Infinity (number)[3]: / / 1
+(11) NaN (number): / / 1
+(11) NaN (number)[2]: / / 0
+(11) NaN (number)[3]: / / 1
+(12) (string): / / 1
+(12) (string)[2]: / / 0
+(12) (string)[3]: / / 1
+(13) 0 (string): / / 1
+(13) 0 (string)[2]: / / 0
+(13) 0 (string)[3]: / / 0
+(14) -0 (string): / / 0
+(14) -0 (string)[2]: / / 0
+(14) -0 (string)[3]: / / 0
+(15) 0.0 (string): / / 0
+(15) 0.0 (string)[2]: / / 0
+(15) 0.0 (string)[3]: / / 0
+(16) 1 (string): / / 0
+(16) 1 (string)[2]: / / 1
+(16) 1 (string)[3]: / / 1
+(17) Hello World! (string): / / 1
+(17) Hello World! (string)[2]: / / 0
+(17) Hello World! (string)[3]: / / 1
+(18) true (string): / / 1
+(18) true (string)[2]: / / 0
+(18) true (string)[3]: / / 1
+(19) _level0 (string): / / 1
+(19) _level0 (string)[2]: / / 0
+(19) _level0 (string)[3]: / / 1
+(20) äöü (string): / / 1
+(20) äöü (string)[2]: / / 0
+(20) äöü (string)[3]: / / 1
+(21) _level0 (movieclip): / / 1
+(21) _level0 (movieclip)[2]: / / 0
+(21) _level0 (movieclip)[3]: / / 1
+(22) [object Object] (object): / / 1
+(22) [object Object] (object)[2]: / / 0
+(22) [object Object] (object)[3]: / / 1
+(23) 1035840244000 (object): / / 1
+(23) 1035840244000 (object)[2]: / / 1
+(23) 1035840244000 (object)[3]: / / 1
+(24) (object): / / 1
+(24) (object)[2]: / / 0
+(24) (object)[3]: / / 1
+(25) (undefined): / / 1
+(25) (undefined)[2]: / / 0
+(25) (undefined)[3]: / / 1
+(26) [type Object] (object): / / 1
+valueOf called
+(26) [type Object] (object)[2]: / / 0
+valueOf called
+(26) [type Object] (object)[3]: / / 1
+(27) [type Object] (object): / / 1
+(27) [type Object] (object)[2]: / / 0
+(27) [type Object] (object)[3]: / / 1
+(28) [object Object] (object): / / 1
+valueOf called with
+(28) [object Object] (object)[2]: / / 0
+valueOf called with
+(28) [object Object] (object)[3]: / / 1
+(29) (object): / / 1
+(29) (object)[2]: / / 0
+(29) (object)[3]: / / 0
+(30) (object): / / 0
+0: valueOf!
+(30) (object)[2]: / / 0
+0: valueOf!
+(30) (object)[3]: / / 0
+(31) null (object): / / 0
+1: valueOf!
+(31) null (object)[2]: / / 0
+1: valueOf!
+(31) null (object)[3]: / / 0
+(32) true (object): / / 0
+2: valueOf!
+(32) true (object)[2]: / / 1
+2: valueOf!
+(32) true (object)[3]: / / 1
+(33) false (object): / / 1
+3: valueOf!
+(33) false (object)[2]: / / 0
+3: valueOf!
+(33) false (object)[3]: / / 0
+(34) 0 (object): / / 0
+4: valueOf!
+(34) 0 (object)[2]: / / 0
+4: valueOf!
+(34) 0 (object)[3]: / / 0
+(35) 1 (object): / / 0
+5: valueOf!
+(35) 1 (object)[2]: / / 1
+5: valueOf!
+(35) 1 (object)[3]: / / 1
+(36) 0.5 (object): / / 1
+6: valueOf!
+(36) 0.5 (object)[2]: / / 1
+6: valueOf!
+(36) 0.5 (object)[3]: / / 1
+(37) -1 (object): / / 1
+7: valueOf!
+(37) -1 (object)[2]: / / 1
+7: valueOf!
+(37) -1 (object)[3]: / / 1
+(38) -0.5 (object): / / 1
+8: valueOf!
+(38) -0.5 (object)[2]: / / 1
+8: valueOf!
+(38) -0.5 (object)[3]: / / 1
+(39) Infinity (object): / / 1
+9: valueOf!
+(39) Infinity (object)[2]: / / 1
+9: valueOf!
+(39) Infinity (object)[3]: / / 1
+(40) -Infinity (object): / / 1
+10: valueOf!
+(40) -Infinity (object)[2]: / / 1
+10: valueOf!
+(40) -Infinity (object)[3]: / / 1
+(41) NaN (object): / / 1
+11: valueOf!
+(41) NaN (object)[2]: / / 0
+11: valueOf!
+(41) NaN (object)[3]: / / 1
+(42) (object): / / 1
+12: valueOf!
+(42) (object)[2]: / / 0
+12: valueOf!
+(42) (object)[3]: / / 1
+(43) 0 (object): / / 1
+13: valueOf!
+(43) 0 (object)[2]: / / 0
+13: valueOf!
+(43) 0 (object)[3]: / / 0
+(44) -0 (object): / / 0
+14: valueOf!
+(44) -0 (object)[2]: / / 0
+14: valueOf!
+(44) -0 (object)[3]: / / 0
+(45) 0.0 (object): / / 0
+15: valueOf!
+(45) 0.0 (object)[2]: / / 0
+15: valueOf!
+(45) 0.0 (object)[3]: / / 0
+(46) 1 (object): / / 0
+16: valueOf!
+(46) 1 (object)[2]: / / 1
+16: valueOf!
+(46) 1 (object)[3]: / / 1
+(47) Hello World! (object): / / 1
+17: valueOf!
+(47) Hello World! (object)[2]: / / 0
+17: valueOf!
+(47) Hello World! (object)[3]: / / 1
+(48) true (object): / / 1
+18: valueOf!
+(48) true (object)[2]: / / 0
+18: valueOf!
+(48) true (object)[3]: / / 1
+(49) _level0 (object): / / 1
+19: valueOf!
+(49) _level0 (object)[2]: / / 0
+19: valueOf!
+(49) _level0 (object)[3]: / / 1
+(50) äöü (object): / / 1
+20: valueOf!
+(50) äöü (object)[2]: / / 0
+20: valueOf!
+(50) äöü (object)[3]: / / 1
+(51) _level0 (object): / / 1
+21: valueOf!
+(51) _level0 (object)[2]: / / 0
+21: valueOf!
+(51) _level0 (object)[3]: / / 1
+(52) [type Object] (object): / / 1
+22: valueOf!
+(52) [type Object] (object)[2]: / / 0
+22: valueOf!
+(52) [type Object] (object)[3]: / / 1
+(53) [type Object] (object): / / 1
+23: valueOf!
+(53) [type Object] (object)[2]: / / 0
+23: valueOf!
+(53) [type Object] (object)[3]: / / 1
+(54) [type Object] (object): / / 1
+24: valueOf!
+(54) [type Object] (object)[2]: / / 0
+24: valueOf!
+(54) [type Object] (object)[3]: / / 1
+(55) (object): / / 1
+25: valueOf!
+(55) (object)[2]: / / 0
+25: valueOf!
+(55) (object)[3]: / / 0
+(56) [type Object] (object): / / 0
+26: valueOf!
+(56) [type Object] (object)[2]: / / 0
+26: valueOf!
+(56) [type Object] (object)[3]: / / 1
+(57) [type Object] (object): / / 1
+27: valueOf!
+(57) [type Object] (object)[2]: / / 0
+27: valueOf!
+(57) [type Object] (object)[3]: / / 1
+(58) [type Object] (object): / / 1
+28: valueOf!
+(58) [type Object] (object)[2]: / / 0
+28: valueOf!
+(58) [type Object] (object)[3]: / / 1
+(59) [type Object] (object): / / 1
+29: valueOf!
+(59) [type Object] (object)[2]: / / 0
+29: valueOf!
+(59) [type Object] (object)[3]: / / 1
diff --git a/test/trace/focusrect-values-6.swf b/test/trace/focusrect-values-6.swf
new file mode 100644
index 0000000..0b42253
Binary files /dev/null and b/test/trace/focusrect-values-6.swf differ
diff --git a/test/trace/focusrect-values-6.swf.trace b/test/trace/focusrect-values-6.swf.trace
new file mode 100644
index 0000000..8ef69e2
--- /dev/null
+++ b/test/trace/focusrect-values-6.swf.trace
@@ -0,0 +1,287 @@
+valueOf called
+toString called
+toString called with
+valueOf called with
+0: valueOf!
+1: valueOf!
+2: valueOf!
+3: valueOf!
+4: valueOf!
+5: valueOf!
+6: valueOf!
+7: valueOf!
+8: valueOf!
+9: valueOf!
+10: valueOf!
+11: valueOf!
+12: valueOf!
+13: valueOf!
+14: valueOf!
+15: valueOf!
+16: valueOf!
+17: valueOf!
+18: valueOf!
+19: valueOf!
+20: valueOf!
+21: valueOf!
+22: valueOf!
+22: toString!
+23: valueOf!
+23: toString!
+24: valueOf!
+24: toString!
+25: valueOf!
+25: toString!
+26: valueOf!
+26: toString!
+27: valueOf!
+27: toString!
+28: valueOf!
+28: toString!
+29: valueOf!
+29: toString!
+initial: null / null / true
+(0) (undefined): null / null / true
+(0) (undefined)[2]: null / null / false
+(0) (undefined)[3]: null / null / true
+(1) null (null): null / null / true
+(1) null (null)[2]: null / null / false
+(1) null (null)[3]: null / null / true
+(2) true (boolean): true / null / true
+(2) true (boolean)[2]: true / null / true
+(2) true (boolean)[3]: true / null / true
+(3) false (boolean): false / null / true
+(3) false (boolean)[2]: false / null / false
+(3) false (boolean)[3]: false / null / false
+(4) 0 (number): false / null / false
+(4) 0 (number)[2]: false / null / false
+(4) 0 (number)[3]: false / null / false
+(5) 1 (number): true / null / false
+(5) 1 (number)[2]: true / null / true
+(5) 1 (number)[3]: true / null / true
+(6) 0.5 (number): true / null / true
+(6) 0.5 (number)[2]: true / null / true
+(6) 0.5 (number)[3]: true / null / true
+(7) -1 (number): true / null / true
+(7) -1 (number)[2]: true / null / true
+(7) -1 (number)[3]: true / null / true
+(8) -0.5 (number): true / null / true
+(8) -0.5 (number)[2]: true / null / true
+(8) -0.5 (number)[3]: true / null / true
+(9) Infinity (number): true / null / true
+(9) Infinity (number)[2]: true / null / true
+(9) Infinity (number)[3]: true / null / true
+(10) -Infinity (number): true / null / true
+(10) -Infinity (number)[2]: true / null / true
+(10) -Infinity (number)[3]: true / null / true
+(11) NaN (number): false / null / true
+(11) NaN (number)[2]: false / null / false
+(11) NaN (number)[3]: false / null / true
+(12) (string): false / null / true
+(12) (string)[2]: false / null / false
+(12) (string)[3]: false / null / true
+(13) 0 (string): false / null / true
+(13) 0 (string)[2]: false / null / false
+(13) 0 (string)[3]: false / null / false
+(14) -0 (string): false / null / false
+(14) -0 (string)[2]: false / null / false
+(14) -0 (string)[3]: false / null / false
+(15) 0.0 (string): false / null / false
+(15) 0.0 (string)[2]: false / null / false
+(15) 0.0 (string)[3]: false / null / false
+(16) 1 (string): true / null / false
+(16) 1 (string)[2]: true / null / true
+(16) 1 (string)[3]: true / null / true
+(17) Hello World! (string): false / null / true
+(17) Hello World! (string)[2]: false / null / false
+(17) Hello World! (string)[3]: false / null / true
+(18) true (string): false / null / true
+(18) true (string)[2]: false / null / false
+(18) true (string)[3]: false / null / true
+(19) _level0 (string): false / null / true
+(19) _level0 (string)[2]: false / null / false
+(19) _level0 (string)[3]: false / null / true
+(20) äöü (string): false / null / true
+(20) äöü (string)[2]: false / null / false
+(20) äöü (string)[3]: false / null / true
+(21) _level0 (movieclip): true / null / true
+(21) _level0 (movieclip)[2]: true / null / false
+(21) _level0 (movieclip)[3]: true / null / true
+(22) [object Object] (object): true / null / true
+(22) [object Object] (object)[2]: true / null / false
+(22) [object Object] (object)[3]: true / null / true
+(23) Mon Oct 28 21:24:04 GMT+0000 2002 (object): true / null / true
+(23) Mon Oct 28 21:24:04 GMT+0000 2002 (object)[2]: true / null / true
+(23) Mon Oct 28 21:24:04 GMT+0000 2002 (object)[3]: true / null / true
+(24) (object): true / null / true
+(24) (object)[2]: true / null / false
+(24) (object)[3]: true / null / true
+(25) [type Function] (function): true / null / true
+(25) [type Function] (function)[2]: true / null / false
+(25) [type Function] (function)[3]: true / null / true
+(26) [type Object] (object): true / null / true
+valueOf called
+(26) [type Object] (object)[2]: true / null / false
+valueOf called
+(26) [type Object] (object)[3]: true / null / true
+(27) [type Object] (object): true / null / true
+(27) [type Object] (object)[2]: true / null / false
+(27) [type Object] (object)[3]: true / null / true
+(28) [object Object] (object): true / null / true
+valueOf called with
+(28) [object Object] (object)[2]: true / null / false
+valueOf called with
+(28) [object Object] (object)[3]: true / null / true
+(29) (object): true / null / true
+(29) (object)[2]: true / null / false
+(29) (object)[3]: true / null / false
+(30) (object): true / null / false
+0: valueOf!
+(30) (object)[2]: true / null / false
+0: valueOf!
+(30) (object)[3]: true / null / false
+(31) null (object): true / null / false
+1: valueOf!
+(31) null (object)[2]: true / null / false
+1: valueOf!
+(31) null (object)[3]: true / null / false
+(32) true (object): true / null / false
+2: valueOf!
+(32) true (object)[2]: true / null / true
+2: valueOf!
+(32) true (object)[3]: true / null / true
+(33) false (object): true / null / true
+3: valueOf!
+(33) false (object)[2]: true / null / false
+3: valueOf!
+(33) false (object)[3]: true / null / false
+(34) 0 (object): true / null / false
+4: valueOf!
+(34) 0 (object)[2]: true / null / false
+4: valueOf!
+(34) 0 (object)[3]: true / null / false
+(35) 1 (object): true / null / false
+5: valueOf!
+(35) 1 (object)[2]: true / null / true
+5: valueOf!
+(35) 1 (object)[3]: true / null / true
+(36) 0.5 (object): true / null / true
+6: valueOf!
+(36) 0.5 (object)[2]: true / null / true
+6: valueOf!
+(36) 0.5 (object)[3]: true / null / true
+(37) -1 (object): true / null / true
+7: valueOf!
+(37) -1 (object)[2]: true / null / true
+7: valueOf!
+(37) -1 (object)[3]: true / null / true
+(38) -0.5 (object): true / null / true
+8: valueOf!
+(38) -0.5 (object)[2]: true / null / true
+8: valueOf!
+(38) -0.5 (object)[3]: true / null / true
+(39) Infinity (object): true / null / true
+9: valueOf!
+(39) Infinity (object)[2]: true / null / true
+9: valueOf!
+(39) Infinity (object)[3]: true / null / true
+(40) -Infinity (object): true / null / true
+10: valueOf!
+(40) -Infinity (object)[2]: true / null / true
+10: valueOf!
+(40) -Infinity (object)[3]: true / null / true
+(41) NaN (object): true / null / true
+11: valueOf!
+(41) NaN (object)[2]: true / null / false
+11: valueOf!
+(41) NaN (object)[3]: true / null / true
+(42) (object): true / null / true
+12: valueOf!
+(42) (object)[2]: true / null / false
+12: valueOf!
+(42) (object)[3]: true / null / true
+(43) 0 (object): true / null / true
+13: valueOf!
+(43) 0 (object)[2]: true / null / false
+13: valueOf!
+(43) 0 (object)[3]: true / null / false
+(44) -0 (object): true / null / false
+14: valueOf!
+(44) -0 (object)[2]: true / null / false
+14: valueOf!
+(44) -0 (object)[3]: true / null / false
+(45) 0.0 (object): true / null / false
+15: valueOf!
+(45) 0.0 (object)[2]: true / null / false
+15: valueOf!
+(45) 0.0 (object)[3]: true / null / false
+(46) 1 (object): true / null / false
+16: valueOf!
+(46) 1 (object)[2]: true / null / true
+16: valueOf!
+(46) 1 (object)[3]: true / null / true
+(47) Hello World! (object): true / null / true
+17: valueOf!
+(47) Hello World! (object)[2]: true / null / false
+17: valueOf!
+(47) Hello World! (object)[3]: true / null / true
+(48) true (object): true / null / true
+18: valueOf!
+(48) true (object)[2]: true / null / false
+18: valueOf!
+(48) true (object)[3]: true / null / true
+(49) _level0 (object): true / null / true
+19: valueOf!
+(49) _level0 (object)[2]: true / null / false
+19: valueOf!
+(49) _level0 (object)[3]: true / null / true
+(50) äöü (object): true / null / true
+20: valueOf!
+(50) äöü (object)[2]: true / null / false
+20: valueOf!
+(50) äöü (object)[3]: true / null / true
+(51) _level0 (object): true / null / true
+21: valueOf!
+(51) _level0 (object)[2]: true / null / false
+21: valueOf!
+(51) _level0 (object)[3]: true / null / true
+(52) [type Object] (object): true / null / true
+22: valueOf!
+(52) [type Object] (object)[2]: true / null / false
+22: valueOf!
+(52) [type Object] (object)[3]: true / null / true
+(53) [type Object] (object): true / null / true
+23: valueOf!
+(53) [type Object] (object)[2]: true / null / false
+23: valueOf!
+(53) [type Object] (object)[3]: true / null / true
+(54) [type Object] (object): true / null / true
+24: valueOf!
+(54) [type Object] (object)[2]: true / null / false
+24: valueOf!
+(54) [type Object] (object)[3]: true / null / true
+(55) [type Object] (object): true / null / true
+25: valueOf!
+(55) [type Object] (object)[2]: true / null / false
+25: valueOf!
+(55) [type Object] (object)[3]: true / null / true
+(56) [type Object] (object): true / null / true
+26: valueOf!
+(56) [type Object] (object)[2]: true / null / false
+26: valueOf!
+(56) [type Object] (object)[3]: true / null / true
+(57) [type Object] (object): true / null / true
+27: valueOf!
+(57) [type Object] (object)[2]: true / null / false
+27: valueOf!
+(57) [type Object] (object)[3]: true / null / true
+(58) [type Object] (object): true / null / true
+28: valueOf!
+(58) [type Object] (object)[2]: true / null / false
+28: valueOf!
+(58) [type Object] (object)[3]: true / null / true
+(59) [type Object] (object): true / null / true
+29: valueOf!
+(59) [type Object] (object)[2]: true / null / false
+29: valueOf!
+(59) [type Object] (object)[3]: true / null / true
diff --git a/test/trace/focusrect-values-7.swf b/test/trace/focusrect-values-7.swf
new file mode 100644
index 0000000..81f6daf
Binary files /dev/null and b/test/trace/focusrect-values-7.swf differ
diff --git a/test/trace/focusrect-values-7.swf.trace b/test/trace/focusrect-values-7.swf.trace
new file mode 100644
index 0000000..7f33a12
--- /dev/null
+++ b/test/trace/focusrect-values-7.swf.trace
@@ -0,0 +1,287 @@
+valueOf called
+toString called
+toString called with
+valueOf called with
+0: valueOf!
+1: valueOf!
+2: valueOf!
+3: valueOf!
+4: valueOf!
+5: valueOf!
+6: valueOf!
+7: valueOf!
+8: valueOf!
+9: valueOf!
+10: valueOf!
+11: valueOf!
+12: valueOf!
+13: valueOf!
+14: valueOf!
+15: valueOf!
+16: valueOf!
+17: valueOf!
+18: valueOf!
+19: valueOf!
+20: valueOf!
+21: valueOf!
+22: valueOf!
+22: toString!
+23: valueOf!
+23: toString!
+24: valueOf!
+24: toString!
+25: valueOf!
+25: toString!
+26: valueOf!
+26: toString!
+27: valueOf!
+27: toString!
+28: valueOf!
+28: toString!
+29: valueOf!
+29: toString!
+initial: null / null / true
+(0) undefined (undefined): null / null / true
+(0) undefined (undefined)[2]: null / null / false
+(0) undefined (undefined)[3]: null / null / true
+(1) null (null): null / null / true
+(1) null (null)[2]: null / null / false
+(1) null (null)[3]: null / null / true
+(2) true (boolean): true / null / true
+(2) true (boolean)[2]: true / null / true
+(2) true (boolean)[3]: true / null / true
+(3) false (boolean): false / null / true
+(3) false (boolean)[2]: false / null / false
+(3) false (boolean)[3]: false / null / false
+(4) 0 (number): false / null / false
+(4) 0 (number)[2]: false / null / false
+(4) 0 (number)[3]: false / null / false
+(5) 1 (number): true / null / false
+(5) 1 (number)[2]: true / null / true
+(5) 1 (number)[3]: true / null / true
+(6) 0.5 (number): true / null / true
+(6) 0.5 (number)[2]: true / null / true
+(6) 0.5 (number)[3]: true / null / true
+(7) -1 (number): true / null / true
+(7) -1 (number)[2]: true / null / true
+(7) -1 (number)[3]: true / null / true
+(8) -0.5 (number): true / null / true
+(8) -0.5 (number)[2]: true / null / true
+(8) -0.5 (number)[3]: true / null / true
+(9) Infinity (number): true / null / true
+(9) Infinity (number)[2]: true / null / true
+(9) Infinity (number)[3]: true / null / true
+(10) -Infinity (number): true / null / true
+(10) -Infinity (number)[2]: true / null / true
+(10) -Infinity (number)[3]: true / null / true
+(11) NaN (number): false / null / true
+(11) NaN (number)[2]: false / null / false
+(11) NaN (number)[3]: false / null / true
+(12) (string): false / null / true
+(12) (string)[2]: false / null / false
+(12) (string)[3]: false / null / true
+(13) 0 (string): true / null / true
+(13) 0 (string)[2]: true / null / false
+(13) 0 (string)[3]: true / null / false
+(14) -0 (string): true / null / false
+(14) -0 (string)[2]: true / null / false
+(14) -0 (string)[3]: true / null / false
+(15) 0.0 (string): true / null / false
+(15) 0.0 (string)[2]: true / null / false
+(15) 0.0 (string)[3]: true / null / false
+(16) 1 (string): true / null / false
+(16) 1 (string)[2]: true / null / true
+(16) 1 (string)[3]: true / null / true
+(17) Hello World! (string): true / null / true
+(17) Hello World! (string)[2]: true / null / false
+(17) Hello World! (string)[3]: true / null / true
+(18) true (string): true / null / true
+(18) true (string)[2]: true / null / false
+(18) true (string)[3]: true / null / true
+(19) _level0 (string): true / null / true
+(19) _level0 (string)[2]: true / null / false
+(19) _level0 (string)[3]: true / null / true
+(20) äöü (string): true / null / true
+(20) äöü (string)[2]: true / null / false
+(20) äöü (string)[3]: true / null / true
+(21) _level0 (movieclip): true / null / true
+(21) _level0 (movieclip)[2]: true / null / false
+(21) _level0 (movieclip)[3]: true / null / true
+(22) [object Object] (object): true / null / true
+(22) [object Object] (object)[2]: true / null / false
+(22) [object Object] (object)[3]: true / null / true
+(23) Mon Oct 28 21:24:04 GMT+0000 2002 (object): true / null / true
+(23) Mon Oct 28 21:24:04 GMT+0000 2002 (object)[2]: true / null / true
+(23) Mon Oct 28 21:24:04 GMT+0000 2002 (object)[3]: true / null / true
+(24) (object): true / null / true
+(24) (object)[2]: true / null / false
+(24) (object)[3]: true / null / true
+(25) [type Function] (function): true / null / true
+(25) [type Function] (function)[2]: true / null / false
+(25) [type Function] (function)[3]: true / null / true
+(26) [type Object] (object): true / null / true
+valueOf called
+(26) [type Object] (object)[2]: true / null / false
+valueOf called
+(26) [type Object] (object)[3]: true / null / true
+(27) [type Object] (object): true / null / true
+(27) [type Object] (object)[2]: true / null / false
+(27) [type Object] (object)[3]: true / null / true
+(28) [object Object] (object): true / null / true
+valueOf called with
+(28) [object Object] (object)[2]: true / null / false
+valueOf called with
+(28) [object Object] (object)[3]: true / null / true
+(29) undefined (object): true / null / true
+(29) undefined (object)[2]: true / null / false
+(29) undefined (object)[3]: true / null / true
+(30) undefined (object): true / null / true
+0: valueOf!
+(30) undefined (object)[2]: true / null / false
+0: valueOf!
+(30) undefined (object)[3]: true / null / true
+(31) null (object): true / null / true
+1: valueOf!
+(31) null (object)[2]: true / null / false
+1: valueOf!
+(31) null (object)[3]: true / null / true
+(32) true (object): true / null / true
+2: valueOf!
+(32) true (object)[2]: true / null / true
+2: valueOf!
+(32) true (object)[3]: true / null / true
+(33) false (object): true / null / true
+3: valueOf!
+(33) false (object)[2]: true / null / false
+3: valueOf!
+(33) false (object)[3]: true / null / false
+(34) 0 (object): true / null / false
+4: valueOf!
+(34) 0 (object)[2]: true / null / false
+4: valueOf!
+(34) 0 (object)[3]: true / null / false
+(35) 1 (object): true / null / false
+5: valueOf!
+(35) 1 (object)[2]: true / null / true
+5: valueOf!
+(35) 1 (object)[3]: true / null / true
+(36) 0.5 (object): true / null / true
+6: valueOf!
+(36) 0.5 (object)[2]: true / null / true
+6: valueOf!
+(36) 0.5 (object)[3]: true / null / true
+(37) -1 (object): true / null / true
+7: valueOf!
+(37) -1 (object)[2]: true / null / true
+7: valueOf!
+(37) -1 (object)[3]: true / null / true
+(38) -0.5 (object): true / null / true
+8: valueOf!
+(38) -0.5 (object)[2]: true / null / true
+8: valueOf!
+(38) -0.5 (object)[3]: true / null / true
+(39) Infinity (object): true / null / true
+9: valueOf!
+(39) Infinity (object)[2]: true / null / true
+9: valueOf!
+(39) Infinity (object)[3]: true / null / true
+(40) -Infinity (object): true / null / true
+10: valueOf!
+(40) -Infinity (object)[2]: true / null / true
+10: valueOf!
+(40) -Infinity (object)[3]: true / null / true
+(41) NaN (object): true / null / true
+11: valueOf!
+(41) NaN (object)[2]: true / null / false
+11: valueOf!
+(41) NaN (object)[3]: true / null / true
+(42) (object): true / null / true
+12: valueOf!
+(42) (object)[2]: true / null / false
+12: valueOf!
+(42) (object)[3]: true / null / true
+(43) 0 (object): true / null / true
+13: valueOf!
+(43) 0 (object)[2]: true / null / false
+13: valueOf!
+(43) 0 (object)[3]: true / null / false
+(44) -0 (object): true / null / false
+14: valueOf!
+(44) -0 (object)[2]: true / null / false
+14: valueOf!
+(44) -0 (object)[3]: true / null / false
+(45) 0.0 (object): true / null / false
+15: valueOf!
+(45) 0.0 (object)[2]: true / null / false
+15: valueOf!
+(45) 0.0 (object)[3]: true / null / false
+(46) 1 (object): true / null / false
+16: valueOf!
+(46) 1 (object)[2]: true / null / true
+16: valueOf!
+(46) 1 (object)[3]: true / null / true
+(47) Hello World! (object): true / null / true
+17: valueOf!
+(47) Hello World! (object)[2]: true / null / false
+17: valueOf!
+(47) Hello World! (object)[3]: true / null / true
+(48) true (object): true / null / true
+18: valueOf!
+(48) true (object)[2]: true / null / false
+18: valueOf!
+(48) true (object)[3]: true / null / true
+(49) _level0 (object): true / null / true
+19: valueOf!
+(49) _level0 (object)[2]: true / null / false
+19: valueOf!
+(49) _level0 (object)[3]: true / null / true
+(50) äöü (object): true / null / true
+20: valueOf!
+(50) äöü (object)[2]: true / null / false
+20: valueOf!
+(50) äöü (object)[3]: true / null / true
+(51) _level0 (object): true / null / true
+21: valueOf!
+(51) _level0 (object)[2]: true / null / false
+21: valueOf!
+(51) _level0 (object)[3]: true / null / true
+(52) [type Object] (object): true / null / true
+22: valueOf!
+(52) [type Object] (object)[2]: true / null / false
+22: valueOf!
+(52) [type Object] (object)[3]: true / null / true
+(53) [type Object] (object): true / null / true
+23: valueOf!
+(53) [type Object] (object)[2]: true / null / false
+23: valueOf!
+(53) [type Object] (object)[3]: true / null / true
+(54) [type Object] (object): true / null / true
+24: valueOf!
+(54) [type Object] (object)[2]: true / null / false
+24: valueOf!
+(54) [type Object] (object)[3]: true / null / true
+(55) [type Object] (object): true / null / true
+25: valueOf!
+(55) [type Object] (object)[2]: true / null / false
+25: valueOf!
+(55) [type Object] (object)[3]: true / null / true
+(56) [type Object] (object): true / null / true
+26: valueOf!
+(56) [type Object] (object)[2]: true / null / false
+26: valueOf!
+(56) [type Object] (object)[3]: true / null / true
+(57) [type Object] (object): true / null / true
+27: valueOf!
+(57) [type Object] (object)[2]: true / null / false
+27: valueOf!
+(57) [type Object] (object)[3]: true / null / true
+(58) [type Object] (object): true / null / true
+28: valueOf!
+(58) [type Object] (object)[2]: true / null / false
+28: valueOf!
+(58) [type Object] (object)[3]: true / null / true
+(59) [type Object] (object): true / null / true
+29: valueOf!
+(59) [type Object] (object)[2]: true / null / false
+29: valueOf!
+(59) [type Object] (object)[3]: true / null / true
diff --git a/test/trace/focusrect-values-8.swf b/test/trace/focusrect-values-8.swf
new file mode 100644
index 0000000..46a3d3a
Binary files /dev/null and b/test/trace/focusrect-values-8.swf differ
diff --git a/test/trace/focusrect-values-8.swf.trace b/test/trace/focusrect-values-8.swf.trace
new file mode 100644
index 0000000..7f33a12
--- /dev/null
+++ b/test/trace/focusrect-values-8.swf.trace
@@ -0,0 +1,287 @@
+valueOf called
+toString called
+toString called with
+valueOf called with
+0: valueOf!
+1: valueOf!
+2: valueOf!
+3: valueOf!
+4: valueOf!
+5: valueOf!
+6: valueOf!
+7: valueOf!
+8: valueOf!
+9: valueOf!
+10: valueOf!
+11: valueOf!
+12: valueOf!
+13: valueOf!
+14: valueOf!
+15: valueOf!
+16: valueOf!
+17: valueOf!
+18: valueOf!
+19: valueOf!
+20: valueOf!
+21: valueOf!
+22: valueOf!
+22: toString!
+23: valueOf!
+23: toString!
+24: valueOf!
+24: toString!
+25: valueOf!
+25: toString!
+26: valueOf!
+26: toString!
+27: valueOf!
+27: toString!
+28: valueOf!
+28: toString!
+29: valueOf!
+29: toString!
+initial: null / null / true
+(0) undefined (undefined): null / null / true
+(0) undefined (undefined)[2]: null / null / false
+(0) undefined (undefined)[3]: null / null / true
+(1) null (null): null / null / true
+(1) null (null)[2]: null / null / false
+(1) null (null)[3]: null / null / true
+(2) true (boolean): true / null / true
+(2) true (boolean)[2]: true / null / true
+(2) true (boolean)[3]: true / null / true
+(3) false (boolean): false / null / true
+(3) false (boolean)[2]: false / null / false
+(3) false (boolean)[3]: false / null / false
+(4) 0 (number): false / null / false
+(4) 0 (number)[2]: false / null / false
+(4) 0 (number)[3]: false / null / false
+(5) 1 (number): true / null / false
+(5) 1 (number)[2]: true / null / true
+(5) 1 (number)[3]: true / null / true
+(6) 0.5 (number): true / null / true
+(6) 0.5 (number)[2]: true / null / true
+(6) 0.5 (number)[3]: true / null / true
+(7) -1 (number): true / null / true
+(7) -1 (number)[2]: true / null / true
+(7) -1 (number)[3]: true / null / true
+(8) -0.5 (number): true / null / true
+(8) -0.5 (number)[2]: true / null / true
+(8) -0.5 (number)[3]: true / null / true
+(9) Infinity (number): true / null / true
+(9) Infinity (number)[2]: true / null / true
+(9) Infinity (number)[3]: true / null / true
+(10) -Infinity (number): true / null / true
+(10) -Infinity (number)[2]: true / null / true
+(10) -Infinity (number)[3]: true / null / true
+(11) NaN (number): false / null / true
+(11) NaN (number)[2]: false / null / false
+(11) NaN (number)[3]: false / null / true
+(12) (string): false / null / true
+(12) (string)[2]: false / null / false
+(12) (string)[3]: false / null / true
+(13) 0 (string): true / null / true
+(13) 0 (string)[2]: true / null / false
+(13) 0 (string)[3]: true / null / false
+(14) -0 (string): true / null / false
+(14) -0 (string)[2]: true / null / false
+(14) -0 (string)[3]: true / null / false
+(15) 0.0 (string): true / null / false
+(15) 0.0 (string)[2]: true / null / false
+(15) 0.0 (string)[3]: true / null / false
+(16) 1 (string): true / null / false
+(16) 1 (string)[2]: true / null / true
+(16) 1 (string)[3]: true / null / true
+(17) Hello World! (string): true / null / true
+(17) Hello World! (string)[2]: true / null / false
+(17) Hello World! (string)[3]: true / null / true
+(18) true (string): true / null / true
+(18) true (string)[2]: true / null / false
+(18) true (string)[3]: true / null / true
+(19) _level0 (string): true / null / true
+(19) _level0 (string)[2]: true / null / false
+(19) _level0 (string)[3]: true / null / true
+(20) äöü (string): true / null / true
+(20) äöü (string)[2]: true / null / false
+(20) äöü (string)[3]: true / null / true
+(21) _level0 (movieclip): true / null / true
+(21) _level0 (movieclip)[2]: true / null / false
+(21) _level0 (movieclip)[3]: true / null / true
+(22) [object Object] (object): true / null / true
+(22) [object Object] (object)[2]: true / null / false
+(22) [object Object] (object)[3]: true / null / true
+(23) Mon Oct 28 21:24:04 GMT+0000 2002 (object): true / null / true
+(23) Mon Oct 28 21:24:04 GMT+0000 2002 (object)[2]: true / null / true
+(23) Mon Oct 28 21:24:04 GMT+0000 2002 (object)[3]: true / null / true
+(24) (object): true / null / true
+(24) (object)[2]: true / null / false
+(24) (object)[3]: true / null / true
+(25) [type Function] (function): true / null / true
+(25) [type Function] (function)[2]: true / null / false
+(25) [type Function] (function)[3]: true / null / true
+(26) [type Object] (object): true / null / true
+valueOf called
+(26) [type Object] (object)[2]: true / null / false
+valueOf called
+(26) [type Object] (object)[3]: true / null / true
+(27) [type Object] (object): true / null / true
+(27) [type Object] (object)[2]: true / null / false
+(27) [type Object] (object)[3]: true / null / true
+(28) [object Object] (object): true / null / true
+valueOf called with
+(28) [object Object] (object)[2]: true / null / false
+valueOf called with
+(28) [object Object] (object)[3]: true / null / true
+(29) undefined (object): true / null / true
+(29) undefined (object)[2]: true / null / false
+(29) undefined (object)[3]: true / null / true
+(30) undefined (object): true / null / true
+0: valueOf!
+(30) undefined (object)[2]: true / null / false
+0: valueOf!
+(30) undefined (object)[3]: true / null / true
+(31) null (object): true / null / true
+1: valueOf!
+(31) null (object)[2]: true / null / false
+1: valueOf!
+(31) null (object)[3]: true / null / true
+(32) true (object): true / null / true
+2: valueOf!
+(32) true (object)[2]: true / null / true
+2: valueOf!
+(32) true (object)[3]: true / null / true
+(33) false (object): true / null / true
+3: valueOf!
+(33) false (object)[2]: true / null / false
+3: valueOf!
+(33) false (object)[3]: true / null / false
+(34) 0 (object): true / null / false
+4: valueOf!
+(34) 0 (object)[2]: true / null / false
+4: valueOf!
+(34) 0 (object)[3]: true / null / false
+(35) 1 (object): true / null / false
+5: valueOf!
+(35) 1 (object)[2]: true / null / true
+5: valueOf!
+(35) 1 (object)[3]: true / null / true
+(36) 0.5 (object): true / null / true
+6: valueOf!
+(36) 0.5 (object)[2]: true / null / true
+6: valueOf!
+(36) 0.5 (object)[3]: true / null / true
+(37) -1 (object): true / null / true
+7: valueOf!
+(37) -1 (object)[2]: true / null / true
+7: valueOf!
+(37) -1 (object)[3]: true / null / true
+(38) -0.5 (object): true / null / true
+8: valueOf!
+(38) -0.5 (object)[2]: true / null / true
+8: valueOf!
+(38) -0.5 (object)[3]: true / null / true
+(39) Infinity (object): true / null / true
+9: valueOf!
+(39) Infinity (object)[2]: true / null / true
+9: valueOf!
+(39) Infinity (object)[3]: true / null / true
+(40) -Infinity (object): true / null / true
+10: valueOf!
+(40) -Infinity (object)[2]: true / null / true
+10: valueOf!
+(40) -Infinity (object)[3]: true / null / true
+(41) NaN (object): true / null / true
+11: valueOf!
+(41) NaN (object)[2]: true / null / false
+11: valueOf!
+(41) NaN (object)[3]: true / null / true
+(42) (object): true / null / true
+12: valueOf!
+(42) (object)[2]: true / null / false
+12: valueOf!
+(42) (object)[3]: true / null / true
+(43) 0 (object): true / null / true
+13: valueOf!
+(43) 0 (object)[2]: true / null / false
+13: valueOf!
+(43) 0 (object)[3]: true / null / false
+(44) -0 (object): true / null / false
+14: valueOf!
+(44) -0 (object)[2]: true / null / false
+14: valueOf!
+(44) -0 (object)[3]: true / null / false
+(45) 0.0 (object): true / null / false
+15: valueOf!
+(45) 0.0 (object)[2]: true / null / false
+15: valueOf!
+(45) 0.0 (object)[3]: true / null / false
+(46) 1 (object): true / null / false
+16: valueOf!
+(46) 1 (object)[2]: true / null / true
+16: valueOf!
+(46) 1 (object)[3]: true / null / true
+(47) Hello World! (object): true / null / true
+17: valueOf!
+(47) Hello World! (object)[2]: true / null / false
+17: valueOf!
+(47) Hello World! (object)[3]: true / null / true
+(48) true (object): true / null / true
+18: valueOf!
+(48) true (object)[2]: true / null / false
+18: valueOf!
+(48) true (object)[3]: true / null / true
+(49) _level0 (object): true / null / true
+19: valueOf!
+(49) _level0 (object)[2]: true / null / false
+19: valueOf!
+(49) _level0 (object)[3]: true / null / true
+(50) äöü (object): true / null / true
+20: valueOf!
+(50) äöü (object)[2]: true / null / false
+20: valueOf!
+(50) äöü (object)[3]: true / null / true
+(51) _level0 (object): true / null / true
+21: valueOf!
+(51) _level0 (object)[2]: true / null / false
+21: valueOf!
+(51) _level0 (object)[3]: true / null / true
+(52) [type Object] (object): true / null / true
+22: valueOf!
+(52) [type Object] (object)[2]: true / null / false
+22: valueOf!
+(52) [type Object] (object)[3]: true / null / true
+(53) [type Object] (object): true / null / true
+23: valueOf!
+(53) [type Object] (object)[2]: true / null / false
+23: valueOf!
+(53) [type Object] (object)[3]: true / null / true
+(54) [type Object] (object): true / null / true
+24: valueOf!
+(54) [type Object] (object)[2]: true / null / false
+24: valueOf!
+(54) [type Object] (object)[3]: true / null / true
+(55) [type Object] (object): true / null / true
+25: valueOf!
+(55) [type Object] (object)[2]: true / null / false
+25: valueOf!
+(55) [type Object] (object)[3]: true / null / true
+(56) [type Object] (object): true / null / true
+26: valueOf!
+(56) [type Object] (object)[2]: true / null / false
+26: valueOf!
+(56) [type Object] (object)[3]: true / null / true
+(57) [type Object] (object): true / null / true
+27: valueOf!
+(57) [type Object] (object)[2]: true / null / false
+27: valueOf!
+(57) [type Object] (object)[3]: true / null / true
+(58) [type Object] (object): true / null / true
+28: valueOf!
+(58) [type Object] (object)[2]: true / null / false
+28: valueOf!
+(58) [type Object] (object)[3]: true / null / true
+(59) [type Object] (object): true / null / true
+29: valueOf!
+(59) [type Object] (object)[2]: true / null / false
+29: valueOf!
+(59) [type Object] (object)[3]: true / null / true
diff --git a/test/trace/focusrect-values.as b/test/trace/focusrect-values.as
new file mode 100644
index 0000000..bb0a3dc
--- /dev/null
+++ b/test/trace/focusrect-values.as
@@ -0,0 +1,19 @@
+// makeswf -v 7 -s 200x150 -r 1 -o focusrect-values.swf focusrect-values.as
+
+#include "values.as"
+
+createEmptyMovieClip ("a", 0);
+createEmptyMovieClip ("b", 1);
+trace ("initial: " + a._focusrect + " / " + b._focusrect + " / " + _focusrect);
+for (i = 0; i < values.length; i++) {
+ a._focusrect = values[i];
+ trace (names[i] + ": " + a._focusrect + " / " + b._focusrect + " / " + _focusrect);
+ _focusrect = false;
+ _focusrect = values[i];
+ trace (names[i] + "[2]: " + a._focusrect + " / " + b._focusrect + " / " + _focusrect);
+ _focusrect = true;
+ _focusrect = values[i];
+ trace (names[i] + "[3]: " + a._focusrect + " / " + b._focusrect + " / " + _focusrect);
+}
+
+getURL ("fscommand:quit", "");
commit 709446de2b4c5716d0b7ebfbeea3d1d5412a3d61
Author: Benjamin Otte <otte at gnome.org>
Date: Mon Mar 31 23:12:14 2008 +0200
fix _focusrect to work in Flash 5, too
diff --git a/swfdec/swfdec_movie_asprops.c b/swfdec/swfdec_movie_asprops.c
index 3d9f0a4..55b8462 100644
--- a/swfdec/swfdec_movie_asprops.c
+++ b/swfdec/swfdec_movie_asprops.c
@@ -401,6 +401,7 @@ mc_url_get (SwfdecMovie *movie, SwfdecAsValue *rval)
static void
mc_focusrect_get (SwfdecMovie *movie, SwfdecAsValue *rval)
{
+ SwfdecAsContext *cx;
SwfdecActor *actor;
if (!SWFDEC_IS_ACTOR (movie)) {
@@ -408,15 +409,20 @@ mc_focusrect_get (SwfdecMovie *movie, SwfdecAsValue *rval)
return;
}
actor = SWFDEC_ACTOR (movie);
+ cx = SWFDEC_AS_OBJECT (actor)->context;
switch (actor->focusrect) {
case SWFDEC_FLASH_YES:
- SWFDEC_AS_VALUE_SET_BOOLEAN (rval, TRUE);
- //SWFDEC_AS_VALUE_SET_INTEGER (rval, 1);
+ if (cx->version > 5)
+ SWFDEC_AS_VALUE_SET_BOOLEAN (rval, TRUE);
+ else
+ SWFDEC_AS_VALUE_SET_INT (rval, 1);
break;
case SWFDEC_FLASH_NO:
- SWFDEC_AS_VALUE_SET_BOOLEAN (rval, FALSE);
- //SWFDEC_AS_VALUE_SET_INTEGER (rval, 0);
+ if (cx->version > 5)
+ SWFDEC_AS_VALUE_SET_BOOLEAN (rval, FALSE);
+ else
+ SWFDEC_AS_VALUE_SET_INT (rval, 0);
break;
case SWFDEC_FLASH_MAYBE:
SWFDEC_AS_VALUE_SET_NULL (rval);
@@ -446,10 +452,14 @@ mc_focusrect_set (SwfdecMovie *movie, const SwfdecAsValue *val)
return;
b = SWFDEC_FLASH_MAYBE;
} else {
- if (movie->parent == NULL)
- b = swfdec_as_value_to_number (cx, val) ? SWFDEC_FLASH_YES : SWFDEC_FLASH_NO;
- else
+ if (movie->parent == NULL) {
+ double d = swfdec_as_value_to_number (cx, val);
+ if (isnan (d))
+ return;
+ b = d ? SWFDEC_FLASH_YES : SWFDEC_FLASH_NO;
+ } else {
b = swfdec_as_value_to_boolean (cx, val) ? SWFDEC_FLASH_YES : SWFDEC_FLASH_NO;
+ }
}
if (b != actor->focusrect) {
commit db3da08da3aefaa2d1d6d1e04de261cd0b37f412
Author: Benjamin Otte <otte at gnome.org>
Date: Mon Mar 31 21:56:50 2008 +0200
implement _focusrect
diff --git a/swfdec/swfdec_actor.h b/swfdec/swfdec_actor.h
index 79e19b3..d315f6e 100644
--- a/swfdec/swfdec_actor.h
+++ b/swfdec/swfdec_actor.h
@@ -41,6 +41,8 @@ struct _SwfdecActor
/* static properties (set by PlaceObject tags) */
SwfdecEventList * events; /* events queued on this movie */
+
+ SwfdecFlashBool focusrect; /* if we should draw a focus rectangle or not */
};
struct _SwfdecActorClass
diff --git a/swfdec/swfdec_movie.h b/swfdec/swfdec_movie.h
index a5d3bbb..f0f12d4 100644
--- a/swfdec/swfdec_movie.h
+++ b/swfdec/swfdec_movie.h
@@ -47,6 +47,12 @@ typedef enum {
SWFDEC_MOVIE_STATE_DESTROYED /* swfdec_movie_destroy has been called */
} SwfdecMovieState;
+typedef enum {
+ SWFDEC_FLASH_MAYBE = 0,
+ SWFDEC_FLASH_YES,
+ SWFDEC_FLASH_NO
+} SwfdecFlashBool;
+
#define SWFDEC_BLEND_MODE_NORMAL 1
#define SWFDEC_BLEND_MODE_LAYER 2
#define SWFDEC_BLEND_MODE_MULTIPLY 3
diff --git a/swfdec/swfdec_movie_asprops.c b/swfdec/swfdec_movie_asprops.c
index 377b9df..3d9f0a4 100644
--- a/swfdec/swfdec_movie_asprops.c
+++ b/swfdec/swfdec_movie_asprops.c
@@ -398,6 +398,66 @@ mc_url_get (SwfdecMovie *movie, SwfdecAsValue *rval)
swfdec_url_get_url (swfdec_loader_get_url (movie->resource->loader))));
}
+static void
+mc_focusrect_get (SwfdecMovie *movie, SwfdecAsValue *rval)
+{
+ SwfdecActor *actor;
+
+ if (!SWFDEC_IS_ACTOR (movie)) {
+ SWFDEC_FIXME ("should not be possible to get _focusrect on non-actors");
+ return;
+ }
+ actor = SWFDEC_ACTOR (movie);
+
+ switch (actor->focusrect) {
+ case SWFDEC_FLASH_YES:
+ SWFDEC_AS_VALUE_SET_BOOLEAN (rval, TRUE);
+ //SWFDEC_AS_VALUE_SET_INTEGER (rval, 1);
+ break;
+ case SWFDEC_FLASH_NO:
+ SWFDEC_AS_VALUE_SET_BOOLEAN (rval, FALSE);
+ //SWFDEC_AS_VALUE_SET_INTEGER (rval, 0);
+ break;
+ case SWFDEC_FLASH_MAYBE:
+ SWFDEC_AS_VALUE_SET_NULL (rval);
+ break;
+ default:
+ g_assert_not_reached();
+ }
+}
+
+static void
+mc_focusrect_set (SwfdecMovie *movie, const SwfdecAsValue *val)
+{
+ SwfdecAsContext *cx;
+ SwfdecActor *actor;
+ SwfdecFlashBool b;
+
+ if (!SWFDEC_IS_ACTOR (movie)) {
+ SWFDEC_FIXME ("should not be possible to get _focusrect on non-actors");
+ return;
+ }
+ cx = SWFDEC_AS_OBJECT (movie)->context;
+ actor = SWFDEC_ACTOR (movie);
+
+ if (SWFDEC_AS_VALUE_IS_UNDEFINED (val) ||
+ SWFDEC_AS_VALUE_IS_NULL (val)) {
+ if (movie->parent == NULL)
+ return;
+ b = SWFDEC_FLASH_MAYBE;
+ } else {
+ if (movie->parent == NULL)
+ b = swfdec_as_value_to_number (cx, val) ? SWFDEC_FLASH_YES : SWFDEC_FLASH_NO;
+ else
+ b = swfdec_as_value_to_boolean (cx, val) ? SWFDEC_FLASH_YES : SWFDEC_FLASH_NO;
+ }
+
+ if (b != actor->focusrect) {
+ actor->focusrect = b;
+ swfdec_movie_invalidate_last (SWFDEC_MOVIE (actor));
+ }
+}
+
struct {
gboolean needs_movie;
const char *name;
@@ -406,28 +466,28 @@ struct {
} swfdec_movieclip_props[] = {
{ 0, SWFDEC_AS_STR__x, mc_x_get, mc_x_set },
{ 0, SWFDEC_AS_STR__y, mc_y_get, mc_y_set },
- { 0, SWFDEC_AS_STR__xscale, mc_xscale_get, mc_xscale_set },
- { 0, SWFDEC_AS_STR__yscale, mc_yscale_get, mc_yscale_set },
- { 1, SWFDEC_AS_STR__currentframe,mc_currentframe, NULL },
+ { 0, SWFDEC_AS_STR__xscale, mc_xscale_get, mc_xscale_set },
+ { 0, SWFDEC_AS_STR__yscale, mc_yscale_get, mc_yscale_set },
+ { 1, SWFDEC_AS_STR__currentframe, mc_currentframe, NULL },
{ 1, SWFDEC_AS_STR__totalframes, mc_totalframes, NULL },
- { 0, SWFDEC_AS_STR__alpha, mc_alpha_get, mc_alpha_set },
- { 0, SWFDEC_AS_STR__visible, mc_visible_get, mc_visible_set },
- { 0, SWFDEC_AS_STR__width, mc_width_get, mc_width_set },
- { 0, SWFDEC_AS_STR__height, mc_height_get, mc_height_set },
- { 0, SWFDEC_AS_STR__rotation, mc_rotation_get, mc_rotation_set },
- { 1, SWFDEC_AS_STR__target, mc_target_get, NULL }, //"_target"
- { 1, SWFDEC_AS_STR__framesloaded,mc_framesloaded, NULL},
- { 0, SWFDEC_AS_STR__name, mc_name_get, mc_name_set },
- { 1, SWFDEC_AS_STR__droptarget, NULL, NULL }, //"_droptarget"
- { 0, SWFDEC_AS_STR__url, mc_url_get, NULL },
- { 0, SWFDEC_AS_STR__highquality, NULL, NULL }, //"_highquality"
- { 0, SWFDEC_AS_STR__focusrect, NULL, NULL }, //"_focusrect"
- { 0, SWFDEC_AS_STR__soundbuftime,NULL, NULL }, //"_soundbuftime"
- { 0, SWFDEC_AS_STR__quality, NULL, NULL }, //"_quality"
- { 0, SWFDEC_AS_STR__xmouse, mc_xmouse_get, NULL },
- { 0, SWFDEC_AS_STR__ymouse, mc_ymouse_get, NULL },
- { 0, SWFDEC_AS_STR__parent, mc_parent, NULL },
- { 0, SWFDEC_AS_STR__root, mc_root, NULL },
+ { 0, SWFDEC_AS_STR__alpha, mc_alpha_get, mc_alpha_set },
+ { 0, SWFDEC_AS_STR__visible, mc_visible_get, mc_visible_set },
+ { 0, SWFDEC_AS_STR__width, mc_width_get, mc_width_set },
+ { 0, SWFDEC_AS_STR__height, mc_height_get, mc_height_set },
+ { 0, SWFDEC_AS_STR__rotation, mc_rotation_get, mc_rotation_set },
+ { 1, SWFDEC_AS_STR__target, mc_target_get, NULL },
+ { 1, SWFDEC_AS_STR__framesloaded, mc_framesloaded, NULL},
+ { 0, SWFDEC_AS_STR__name, mc_name_get, mc_name_set },
+ { 1, SWFDEC_AS_STR__droptarget, NULL, NULL }, //"_droptarget"
+ { 0, SWFDEC_AS_STR__url, mc_url_get, NULL },
+ { 0, SWFDEC_AS_STR__highquality, NULL, NULL }, //"_highquality"
+ { 0, SWFDEC_AS_STR__focusrect, mc_focusrect_get, mc_focusrect_set }, //"_focusrect"
+ { 0, SWFDEC_AS_STR__soundbuftime, NULL, NULL }, //"_soundbuftime"
+ { 0, SWFDEC_AS_STR__quality, NULL, NULL }, //"_quality"
+ { 0, SWFDEC_AS_STR__xmouse, mc_xmouse_get, NULL },
+ { 0, SWFDEC_AS_STR__ymouse, mc_ymouse_get, NULL },
+ { 0, SWFDEC_AS_STR__parent, mc_parent, NULL },
+ { 0, SWFDEC_AS_STR__root, mc_root, NULL },
};
static int
diff --git a/swfdec/swfdec_player.c b/swfdec/swfdec_player.c
index f208987..520580c 100644
--- a/swfdec/swfdec_player.c
+++ b/swfdec/swfdec_player.c
@@ -3298,6 +3298,7 @@ swfdec_player_set_url (SwfdecPlayer *player, const SwfdecURL *url)
SWFDEC_LOADER_REQUEST_DEFAULT, NULL);
priv->resource = swfdec_resource_new (player, loader, priv->variables);
movie = swfdec_movie_new (player, -16384, NULL, priv->resource, NULL, SWFDEC_AS_STR__level0);
+ SWFDEC_ACTOR (movie)->focusrect = SWFDEC_FLASH_YES;
movie->name = SWFDEC_AS_STR_EMPTY;
g_object_unref (loader);
g_object_notify (G_OBJECT (player), "url");
diff --git a/swfdec/swfdec_resource.c b/swfdec/swfdec_resource.c
index 90710cb..6ee756b 100644
--- a/swfdec/swfdec_resource.c
+++ b/swfdec/swfdec_resource.c
@@ -224,6 +224,7 @@ swfdec_resource_create_movie (SwfdecResource *resource)
/* FIXME: is this correct? */
movie = swfdec_resource_replace_movie (movie, resource);
}
+ SWFDEC_ACTOR (movie)->focusrect = SWFDEC_FLASH_YES;
swfdec_player_unroot (player, resource);
return TRUE;
}
More information about the Swfdec-commits
mailing list