CVSROOT: /cvsroot/gnash Module name: gnash Changes by: Udo Giacomozzi <udog> 07/12/07 14:39:20
Modified files: . : ChangeLog server : sprite_instance.cpp testsuite/misc-swfc.all: gotoFrameLabelAsFunction.sc Log message: server/sprite_instance.cpp: fix gotoAndXXX for frame labels CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5107&r2=1.5108 http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.406&r2=1.407 http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/misc-swfc.all/gotoFrameLabelAsFunction.sc?cvsroot=gnash&r1=1.1&r2=1.2 Patches: Index: ChangeLog =================================================================== RCS file: /cvsroot/gnash/gnash/ChangeLog,v retrieving revision 1.5107 retrieving revision 1.5108 diff -u -b -r1.5107 -r1.5108 --- ChangeLog 7 Dec 2007 14:16:11 -0000 1.5107 +++ ChangeLog 7 Dec 2007 14:39:19 -0000 1.5108 @@ -6,6 +6,7 @@ fix sanity check * testsuite/misc-swfc.all/gotoFrameLabelAsFunction.sc: new test for gotoAndPlay(label) *function* + * server/sprite_instance.cpp: fix gotoAndXXX for frame labels 2007-12-07 Sandro Santilli <[EMAIL PROTECTED]> Index: server/sprite_instance.cpp =================================================================== RCS file: /cvsroot/gnash/gnash/server/sprite_instance.cpp,v retrieving revision 1.406 retrieving revision 1.407 diff -u -b -r1.406 -r1.407 --- server/sprite_instance.cpp 7 Dec 2007 01:33:26 -0000 1.406 +++ server/sprite_instance.cpp 7 Dec 2007 14:39:20 -0000 1.407 @@ -502,9 +502,19 @@ return as_value(); } + size_t frame_number; + if ( ! sprite->get_frame_number(fn.arg(0), frame_number) ) + { + // No dice. + IF_VERBOSE_ASCODING_ERRORS( + log_aserror(_("sprite_goto_and_play('%s') -- invalid frame"), + fn.arg(0).to_debug_string().c_str()); + ); + return as_value(); + } + // Convert to 0-based - size_t target_frame = size_t(fn.arg(0).to_number() - 1); - sprite->goto_frame(target_frame); + sprite->goto_frame(frame_number); sprite->set_play_state(sprite_instance::PLAY); return as_value(); } @@ -521,10 +531,19 @@ return as_value(); } - // Convert to 0-based - size_t target_frame = size_t(fn.arg(0).to_number() - 1); + size_t frame_number; + if ( ! sprite->get_frame_number(fn.arg(0), frame_number) ) + { + // No dice. + IF_VERBOSE_ASCODING_ERRORS( + log_aserror(_("sprite_goto_and_stop('%s') -- invalid frame"), + fn.arg(0).to_debug_string().c_str()); + ); + return as_value(); + } - sprite->goto_frame(target_frame); + // Convert to 0-based + sprite->goto_frame(frame_number); sprite->set_play_state(sprite_instance::STOP); return as_value(); } Index: testsuite/misc-swfc.all/gotoFrameLabelAsFunction.sc =================================================================== RCS file: /cvsroot/gnash/gnash/testsuite/misc-swfc.all/gotoFrameLabelAsFunction.sc,v retrieving revision 1.1 retrieving revision 1.2 diff -u -b -r1.1 -r1.2 --- testsuite/misc-swfc.all/gotoFrameLabelAsFunction.sc 7 Dec 2007 14:16:52 -0000 1.1 +++ testsuite/misc-swfc.all/gotoFrameLabelAsFunction.sc 7 Dec 2007 14:39:20 -0000 1.2 @@ -14,7 +14,7 @@ this.onEnterFrame = function() { _root.framecount++; if (_root.framecount==10) { - xcheck_equals(_root._currentframe, 5); + check_equals(_root._currentframe, 5); totals(1); } }; @@ -27,6 +27,7 @@ .frame 4 .action: trace("reached label 4 (wrong)"); + check(0); stop(); .end @@ -39,6 +40,7 @@ .frame 6 .action: trace("reached label 6 (wrong)"); + check(0); stop(); .end _______________________________________________ Gnash-commit mailing list Gnash-commit@gnu.org http://lists.gnu.org/mailman/listinfo/gnash-commit