gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog server/ActionExec.cpp server/Gl...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/ActionExec.cpp server/Gl...
Date: Sat, 01 Jul 2006 10:00:29 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  06/07/01 10:00:29

Modified files:
        .              : ChangeLog 
        server         : ActionExec.cpp Global.cpp as_environment.cpp 
                         as_environment.h sprite_instance.cpp 
        server/swf     : ASHandlers.cpp 

Log message:
                * server/as_environment.cpp, server/as_environment.h:
                added a get_version() method to hide implementation.
                * server/ActionExec.cpp, server/sprite_instance.cpp,
                server/swf/ASHandlers.cpp: use env.get_version()
                rather then own-rolled version extracter.
                * server/Global.cpp: tolerate (don't abort) unimplemented
                ASSetPropFlags with non-object 'props' argument.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.453&r2=1.454
http://cvs.savannah.gnu.org/viewcvs/gnash/server/ActionExec.cpp?cvsroot=gnash&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/gnash/server/Global.cpp?cvsroot=gnash&r1=1.14&r2=1.15
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_environment.cpp?cvsroot=gnash&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_environment.h?cvsroot=gnash&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.15&r2=1.16
http://cvs.savannah.gnu.org/viewcvs/gnash/server/swf/ASHandlers.cpp?cvsroot=gnash&r1=1.26&r2=1.27

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.453
retrieving revision 1.454
diff -u -b -r1.453 -r1.454
--- ChangeLog   1 Jul 2006 01:34:03 -0000       1.453
+++ ChangeLog   1 Jul 2006 10:00:29 -0000       1.454
@@ -1,3 +1,13 @@
+2006-07-01 Sandro Santilli <address@hidden>
+
+       * server/as_environment.cpp, server/as_environment.h:
+       added a get_version() method to hide implementation.
+       * server/ActionExec.cpp, server/sprite_instance.cpp,
+       server/swf/ASHandlers.cpp: use env.get_version()
+       rather then own-rolled version extracter.
+       * server/Global.cpp: tolerate (don't abort) unimplemented
+       ASSetPropFlags with non-object 'props' argument.
+
 2006-06-30 Sandro Santilli <address@hidden>
 
        * server/swf/ASHandlers.cpp (ActionGetUrl): fixed read

Index: server/ActionExec.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/ActionExec.cpp,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- server/ActionExec.cpp       30 Jun 2006 00:31:31 -0000      1.7
+++ server/ActionExec.cpp       1 Jul 2006 10:00:29 -0000       1.8
@@ -64,7 +64,7 @@
 // too much information for my tastes. I really want just
 // to see how stack changes while executing actions...
 // --strk Fri Jun 30 02:28:46 CEST 2006
-//#define DEBUG_STACK 1
+#define DEBUG_STACK 1
 #endif
 
 using namespace gnash;

Index: server/Global.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/Global.cpp,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- server/Global.cpp   30 Jun 2006 00:32:40 -0000      1.14
+++ server/Global.cpp   1 Jul 2006 10:00:29 -0000       1.15
@@ -362,27 +362,41 @@
     fn.result->set_int(result);
 }
 
+// ASSetPropFlags function
 static void
 as_global_assetpropflags(const fn_call& fn)
-    // ASSetPropFlags function
 {
-    const int version = 
fn.env->get_target()->get_movie_definition()->get_version();
+       int version = fn.env->get_version();
 
     // Check the arguments
     assert(fn.nargs == 3 || fn.nargs == 4);
     assert((version == 5) ? (fn.nargs == 3) : true);
                
-               if (fn.arg(0).get_type() == as_value::UNDEFINED)
-               {
-                       return;
-               }
+       // ASSetPropFlags(obj, props, n, allowFalse=false)
 
     // object
     as_object* obj = fn.arg(0).to_object();
+       if ( ! obj )
+       {
+               log_warning("Invalid call to ASSSetPropFlags: "
+                       "object argument is not an object: %s",
+                       fn.arg(0).to_string());
+               return;
+       }
 
     // list of child names
+
     as_object* props = fn.arg(1).to_object();
-    if (props == NULL) {
+       if (props == NULL)
+       {
+               // second argument can either be an array or
+               // a comma-delimited string.
+               // see: http://www.flashguru.co.uk/assetpropflags/
+               log_error("ASSetPropFlags unimplemented for non-array prop"
+                       " argument (%s)", fn.arg(1).to_string());
+
+               return; // be nice, dont' abort
+
        // tulrich: this fires in test_ASSetPropFlags -- is it correct?
        assert(fn.arg(1).get_type() == as_value::NULLTYPE);
     }
@@ -456,7 +470,9 @@
                            ++it;
                        }
                }
-       } else {
+       }
+       else
+       {
            as_object* object = obj;
            as_object* object_props = props;
 

Index: server/as_environment.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/as_environment.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- server/as_environment.cpp   28 Jun 2006 23:27:44 -0000      1.6
+++ server/as_environment.cpp   1 Jul 2006 10:00:29 -0000       1.7
@@ -478,6 +478,14 @@
     return env;
 }
 
+int
+as_environment::get_version() const
+{
+       sprite_instance* si=m_target;
+       movie_definition* md=si->get_movie_definition();
+       return md->get_version();
+}
+
 
 };
 

Index: server/as_environment.h
===================================================================
RCS file: /sources/gnash/gnash/server/as_environment.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- server/as_environment.h     30 Jun 2006 00:12:54 -0000      1.8
+++ server/as_environment.h     1 Jul 2006 10:00:29 -0000       1.9
@@ -225,9 +225,18 @@
                out << std::endl;
        }
 
+       /// Return the SWF version we're running for.
+       //
+       /// TODO: check what to return when playing multiple
+       /// movies with different versions: should we always
+       /// return version of the topmost (first-loaded) movie
+       /// or of the target (as I think we're doing now) ?
+       ///
+       int get_version() const;
+
 private:
 
-       /// Movie target. (change to sprite_instance)
+       /// Movie target. 
        sprite_instance*        m_target;
 
        int find_local(const tu_string& varname) const;

Index: server/sprite_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- server/sprite_instance.cpp  30 Jun 2006 16:03:24 -0000      1.15
+++ server/sprite_instance.cpp  1 Jul 2006 10:00:29 -0000       1.16
@@ -869,10 +869,8 @@
        else if (name == "_level0"
             || name == "_root")
        {
-               log_error("Must complete refactoring of movie classes");
                //we must return the _root movie as a sprite_instance
                return get_root_movie();
-           //return m_root->m_movie.get_ptr();
        }
 
        // See if we have a match on the display list.

Index: server/swf/ASHandlers.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/swf/ASHandlers.cpp,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -b -r1.26 -r1.27
--- server/swf/ASHandlers.cpp   1 Jul 2006 01:34:03 -0000       1.26
+++ server/swf/ASHandlers.cpp   1 Jul 2006 10:00:29 -0000       1.27
@@ -801,7 +801,7 @@
 //    GNASH_REPORT_FUNCTION;
     as_environment& env = thread.env;
     ensure_stack(env, 1);
-    int version = env.get_target()->get_movie_definition()->get_version();    
+    int version = env.get_version();
     
env.top(0).set_int(env.top(0).to_tu_string_versioned(version).utf8_length());
 }
 
@@ -813,7 +813,7 @@
     ensure_stack(env, 3); // size, base, string
     int        size = int(env.top(0).to_number());
     int        base = int(env.top(1).to_number()) - 1;  // 1-based indices
-    int version = env.get_target()->get_movie_definition()->get_version();    
+    int version = env.get_version();
     const tu_string&   str = env.top(2).to_tu_string_versioned(version);
     
     // Keep base within range.
@@ -939,7 +939,7 @@
 
     ensure_stack(env, 2); // two strings
 
-    int version = env.get_target()->get_movie_definition()->get_version();    
+    int version = env.get_version();
     env.top(1).convert_to_string_versioned(version);
     env.top(1).string_concat(env.top(0).to_tu_string_versioned(version));
     env.drop(1);
@@ -1999,7 +1999,7 @@
 
     ensure_stack(env, 2); 
 
-    int version = env.get_target()->get_movie_definition()->get_version();    
+    int version = env.get_version();
     if (env.top(0).get_type() == as_value::STRING
         || env.top(1).get_type() == as_value::STRING) {
         env.top(1).convert_to_string_versioned(version);
@@ -2053,7 +2053,7 @@
 //    GNASH_REPORT_FUNCTION;
     as_environment& env = thread.env;
     ensure_stack(env, 1); 
-    int version = env.get_target()->get_movie_definition()->get_version();    
+    int version = env.get_version();
     env.top(0).convert_to_string_versioned(version);
 }
 
@@ -2086,7 +2086,7 @@
     ensure_stack(env, 2); // member name, target
 
     // Some corner case behaviors depend on the SWF file version.
-    int version = env.get_target()->get_movie_definition()->get_version();
+    int version = env.get_version();
     
     as_value member_name = env.top(0);
     as_value target = env.top(1);
@@ -2178,7 +2178,7 @@
     as_value result;
 
     // Some corner case behaviors depend on the SWF file version.
-    //int version = env.get_target()->get_movie_definition()->get_version();
+    //int version = env.get_version();
 
     // Get name of the method
     const tu_string &method_name = env.top(0).to_tu_string();




reply via email to

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