CVSROOT: /sources/gnash Module name: gnash Changes by: Sandro Santilli <strk> 07/11/27 22:06:03
Modified files: . : ChangeLog server : swf.h server/vm : ASHandlers.cpp ASHandlers.h Log message: stub support for fscommand2 (swf7 opcode) CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4987&r2=1.4988 http://cvs.savannah.gnu.org/viewcvs/gnash/server/swf.h?cvsroot=gnash&r1=1.42&r2=1.43 http://cvs.savannah.gnu.org/viewcvs/gnash/server/vm/ASHandlers.cpp?cvsroot=gnash&r1=1.163&r2=1.164 http://cvs.savannah.gnu.org/viewcvs/gnash/server/vm/ASHandlers.h?cvsroot=gnash&r1=1.11&r2=1.12 Patches: Index: ChangeLog =================================================================== RCS file: /sources/gnash/gnash/ChangeLog,v retrieving revision 1.4987 retrieving revision 1.4988 diff -u -b -r1.4987 -r1.4988 --- ChangeLog 27 Nov 2007 20:37:52 -0000 1.4987 +++ ChangeLog 27 Nov 2007 22:06:02 -0000 1.4988 @@ -1,5 +1,11 @@ 2007-11-27 Sandro Santilli <[EMAIL PROTECTED]> + * server/swf.h: define ACTION_FSCOMMAND2 + * server/vm/ASHandlers.{cpp,h}: stub support for fscommand2 + (SWF7 opcode) + +2007-11-27 Sandro Santilli <[EMAIL PROTECTED]> + * server/movie_root.{cpp,h}: notify mouse events to _global.Mouse listeners * server/asobj/Mouse.cpp: initialize _global.Mouse as an Index: server/swf.h =================================================================== RCS file: /sources/gnash/gnash/server/swf.h,v retrieving revision 1.42 retrieving revision 1.43 diff -u -b -r1.42 -r1.43 --- server/swf.h 24 Nov 2007 08:23:47 -0000 1.42 +++ server/swf.h 27 Nov 2007 22:06:03 -0000 1.43 @@ -247,6 +247,21 @@ /// ACTION_IMPLEMENTSOP = 0x2C, + /// SWF7 + /// + /// This action executes an fscommand. + /// Stack In: + /// i1 -- number of arguments (int) + /// s2 -- command string + /// [s3..sn] -- arguments, as many as specified in i1 + /// Stack Out: + /// not known + /// + /// See: + /// http://sswf.sourceforge.net/SWFalexref.html#action_fscommand2 + /// + ACTION_FSCOMMAND2 = 0x2D, + ACTION_RANDOM = 0x30, ACTION_MBLENGTH = 0x31, ACTION_ORD = 0x32, Index: server/vm/ASHandlers.cpp =================================================================== RCS file: /sources/gnash/gnash/server/vm/ASHandlers.cpp,v retrieving revision 1.163 retrieving revision 1.164 diff -u -b -r1.163 -r1.164 --- server/vm/ASHandlers.cpp 27 Nov 2007 17:36:40 -0000 1.163 +++ server/vm/ASHandlers.cpp 27 Nov 2007 22:06:03 -0000 1.164 @@ -17,7 +17,7 @@ // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // -/* $Id: ASHandlers.cpp,v 1.163 2007/11/27 17:36:40 strk Exp $ */ +/* $Id: ASHandlers.cpp,v 1.164 2007/11/27 22:06:03 strk Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -101,7 +101,7 @@ static void unsupported_action_handler(ActionExec& thread) { - log_error(_("Unsupported action handler invoked, code at pc is %d"), thread.code[thread.pc]); + log_error(_("Unsupported action handler invoked, code at pc is %x"), thread.code[thread.pc]); } ActionHandler::ActionHandler() @@ -293,6 +293,8 @@ string("ActionCastOp"), SWFHandlers::ActionCastOp); handlers[ACTION_IMPLEMENTSOP] = ActionHandler(ACTION_IMPLEMENTSOP, string("ActionImplementsOp"), SWFHandlers::ActionImplementsOp); + handlers[ACTION_FSCOMMAND2] = ActionHandler(ACTION_FSCOMMAND2, + string("ActionFscommand2"), SWFHandlers::ActionFscommand2); handlers[ACTION_RANDOM] = ActionHandler(ACTION_RANDOM, string("ActionRandom"), SWFHandlers::ActionRandom); handlers[ACTION_MBLENGTH] = ActionHandler(ACTION_MBLENGTH, @@ -1437,6 +1439,41 @@ } void +SWFHandlers::ActionFscommand2(ActionExec& thread) +{ +// GNASH_REPORT_FUNCTION; + + assert(thread.code[thread.pc] == SWF::ACTION_FSCOMMAND2); // 0x0E + + as_environment& env = thread.env; + + unsigned int off=0; + + thread.ensureStack(1); // nargs + unsigned int nargs = env.top(off++).to_int(); + + thread.ensureStack(nargs); // nargs, cmdname + std::string cmd = env.top(off++).to_string(); + + std::stringstream ss; + ss << cmd << "("; + for (unsigned int i=1; i<nargs; ++i) + { + as_value arg = env.top(off++); + if ( i ) ss << ", "; + ss << arg.to_debug_string(); + } + ss << ")"; + + log_unimpl("fscommand2:%s", ss.str().c_str()); + + // TODO: check wheter or not we should drop anything from + // the stack, some reports and the Canonical tests + // suggest we shoudn't + +} + +void SWFHandlers::ActionRandom(ActionExec& thread) { // GNASH_REPORT_FUNCTION; Index: server/vm/ASHandlers.h =================================================================== RCS file: /sources/gnash/gnash/server/vm/ASHandlers.h,v retrieving revision 1.11 retrieving revision 1.12 diff -u -b -r1.11 -r1.12 --- server/vm/ASHandlers.h 25 Oct 2007 08:10:15 -0000 1.11 +++ server/vm/ASHandlers.h 27 Nov 2007 22:06:03 -0000 1.12 @@ -209,6 +209,7 @@ static void ActionThrow(ActionExec& thread); static void ActionCastOp(ActionExec& thread); static void ActionImplementsOp(ActionExec& thread); + static void ActionFscommand2(ActionExec& thread); static void ActionRandom(ActionExec& thread); static void ActionMbLength(ActionExec& thread); static void ActionOrd(ActionExec& thread); _______________________________________________ Gnash-commit mailing list Gnash-commit@gnu.org http://lists.gnu.org/mailman/listinfo/gnash-commit