gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] gnash ChangeLog server/swf.h server/vm/ASHandle...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/swf.h server/vm/ASHandle...
Date: Tue, 27 Nov 2007 22:06:03 +0000

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 <address@hidden>
 
+       * server/swf.h: define ACTION_FSCOMMAND2
+       * server/vm/ASHandlers.{cpp,h}: stub support for fscommand2
+         (SWF7 opcode)
+
+2007-11-27 Sandro Santilli <address@hidden>
+
        * 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);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]