CVSROOT: /sources/gnash Module name: gnash Changes by: Sandro Santilli <strk> 07/12/26 08:05:00
Modified files: . : ChangeLog server : as_environment.cpp namedStrings.cpp namedStrings.h sprite_instance.cpp Log message: Add PROP_uROOT and PROP_uGLOBAL CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5257&r2=1.5258 http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_environment.cpp?cvsroot=gnash&r1=1.117&r2=1.118 http://cvs.savannah.gnu.org/viewcvs/gnash/server/namedStrings.cpp?cvsroot=gnash&r1=1.6&r2=1.7 http://cvs.savannah.gnu.org/viewcvs/gnash/server/namedStrings.h?cvsroot=gnash&r1=1.8&r2=1.9 http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.420&r2=1.421 Patches: Index: ChangeLog =================================================================== RCS file: /sources/gnash/gnash/ChangeLog,v retrieving revision 1.5257 retrieving revision 1.5258 diff -u -b -r1.5257 -r1.5258 --- ChangeLog 26 Dec 2007 01:11:07 -0000 1.5257 +++ ChangeLog 26 Dec 2007 08:04:58 -0000 1.5258 @@ -1,3 +1,9 @@ +2007-12-26 Sandro Santilli <[EMAIL PROTECTED]> + + * server/: sprite_instance.cpp, as_environment.cpp, + namedStrings.{cpp,h}: + Add PROP_uROOT and PROP_uGLOBAL + 2007-12-25 Rob Savoye <[EMAIL PROTECTED]> * configure.ac: Add new security settings. Index: server/as_environment.cpp =================================================================== RCS file: /sources/gnash/gnash/server/as_environment.cpp,v retrieving revision 1.117 retrieving revision 1.118 diff -u -b -r1.117 -r1.118 --- server/as_environment.cpp 24 Dec 2007 05:33:44 -0000 1.117 +++ server/as_environment.cpp 26 Dec 2007 08:04:59 -0000 1.118 @@ -17,7 +17,7 @@ // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // -/* $Id: as_environment.cpp,v 1.117 2007/12/24 05:33:44 zoulunkai Exp $ */ +/* $Id: as_environment.cpp,v 1.118 2007/12/26 08:04:59 strk Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -33,6 +33,7 @@ #include "log.h" #include "Property.h" #include "as_object.h" +#include "namedStrings.h" #include <string> #include <utility> // for std::pair @@ -171,7 +172,7 @@ as_object* global = vm.getGlobal(); - if ( swfVersion > 5 && varname == "_global" ) + if ( swfVersion > 5 && key == NSV::PROP_uGLOBAL ) { // The "_global" ref was added in SWF6 if ( retTarget ) *retTarget = NULL; // correct ?? @@ -633,7 +634,7 @@ // Looking for _global ? as_object* global = VM::get().getGlobal(); - if ( swfVersion > 5 && subpart == "_global" ) + if ( swfVersion > 5 && subpartKey == NSV::PROP_uGLOBAL ) { element = global; break; Index: server/namedStrings.cpp =================================================================== RCS file: /sources/gnash/gnash/server/namedStrings.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -u -b -r1.6 -r1.7 --- server/namedStrings.cpp 21 Nov 2007 09:21:49 -0000 1.6 +++ server/namedStrings.cpp 26 Dec 2007 08:04:59 -0000 1.7 @@ -61,6 +61,8 @@ { "onSelect", NSV::PROP_ON_SELECT }, { "onStatus", NSV::PROP_ON_STATUS }, { "_parent", NSV::PROP_uPARENT }, + { "_root", NSV::PROP_uROOT }, + { "_global", NSV::PROP_uGLOBAL }, { "__proto__", NSV::PROP_uuPROTOuu }, { "prototype", NSV::PROP_PROTOTYPE }, { "push", NSV::PROP_PUSH }, Index: server/namedStrings.h =================================================================== RCS file: /sources/gnash/gnash/server/namedStrings.h,v retrieving revision 1.8 retrieving revision 1.9 diff -u -b -r1.8 -r1.9 --- server/namedStrings.h 21 Nov 2007 09:21:49 -0000 1.8 +++ server/namedStrings.h 26 Dec 2007 08:04:59 -0000 1.9 @@ -83,6 +83,8 @@ PROP_ON_SELECT, PROP_ON_STATUS, PROP_uPARENT, + PROP_uROOT, + PROP_uGLOBAL, PROP_uuPROTOuu, PROP_PROTOTYPE, PROP_PUSH, Index: server/sprite_instance.cpp =================================================================== RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v retrieving revision 1.420 retrieving revision 1.421 diff -u -b -r1.420 -r1.421 --- server/sprite_instance.cpp 24 Dec 2007 10:08:32 -0000 1.420 +++ server/sprite_instance.cpp 26 Dec 2007 08:04:59 -0000 1.421 @@ -1839,14 +1839,12 @@ bool sprite_instance::get_member(string_table::key name_key, as_value* val, string_table::key nsname) { - const std::string& name = VM::get().getStringTable().value(name_key); - // FIXME: use addProperty interface for these !! // TODO: or at least have a character:: protected method take // care of these ? // Duplicates code in character::get_path_element_character too.. // - if (name == "_root" ) + if (name_key == NSV::PROP_uROOT) { //if ( isUnloaded() ) return false; // see movieclip_destruction_test3.sc @@ -1855,10 +1853,20 @@ return true; } + + if ( _vm.getSWFVersion() > 5 && name_key == NSV::PROP_uGLOBAL ) // see MovieClip.as + { + // The "_global" ref was added in SWF6 + val->set_as_object( _vm.getGlobal() ); + return true; + } + + const std::string& name = _vm.getStringTable().value(name_key); + if (name.compare(0, 6, "_level") == 0 && name.find_first_not_of("0123456789", 7) == string::npos ) { unsigned int levelno = atoi(name.c_str()+6); // getting 0 here for "_level" is intentional - movie_instance* mo = VM::get().getRoot().getLevel(levelno).get(); + movie_instance* mo = _vm.getRoot().getLevel(levelno).get(); if ( mo ) { val->set_as_object(mo); @@ -1869,12 +1877,6 @@ return false; } } - if ( _vm.getSWFVersion() > 5 && name == "_global" ) // see MovieClip.as - { - // The "_global" ref was added in SWF6 - val->set_as_object( _vm.getGlobal() ); - return true; - } // Try object members, BEFORE display list items! // (see testcase VarAndCharClash.swf in testsuite/misc-ming.all) _______________________________________________ Gnash-commit mailing list Gnash-commit@gnu.org http://lists.gnu.org/mailman/listinfo/gnash-commit