CVSROOT: /sources/gnash Module name: gnash Changes by: Sandro Santilli <strk> 07/07/11 00:16:39
Modified files: . : ChangeLog server : as_environment.cpp character.cpp sprite_instance.cpp Log message: * server/: as_environment.cpp, character.cpp, sprite_instance.cpp: properly evaluate _level# path components. CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.3706&r2=1.3707 http://cvs.savannah.gnu.org/viewcvs/gnash/server/as_environment.cpp?cvsroot=gnash&r1=1.81&r2=1.82 http://cvs.savannah.gnu.org/viewcvs/gnash/server/character.cpp?cvsroot=gnash&r1=1.45&r2=1.46 http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.294&r2=1.295 Patches: Index: ChangeLog =================================================================== RCS file: /sources/gnash/gnash/ChangeLog,v retrieving revision 1.3706 retrieving revision 1.3707 diff -u -b -r1.3706 -r1.3707 --- ChangeLog 10 Jul 2007 23:48:41 -0000 1.3706 +++ ChangeLog 11 Jul 2007 00:16:37 -0000 1.3707 @@ -1,5 +1,11 @@ 2007-07-10 Sandro Santilli <[EMAIL PROTECTED]> + * server/: as_environment.cpp, character.cpp, + sprite_instance.cpp: properly evaluate _level# + path components. + +2007-07-10 Sandro Santilli <[EMAIL PROTECTED]> + * server/vm/ASHandlers.cpp (CommonGetUrl): implement _level loading. Fixes bug #19968. * server/movie_root.{cpp,h}: add loadLevel() method, store levels in Index: server/as_environment.cpp =================================================================== RCS file: /sources/gnash/gnash/server/as_environment.cpp,v retrieving revision 1.81 retrieving revision 1.82 diff -u -b -r1.81 -r1.82 --- server/as_environment.cpp 1 Jul 2007 10:54:19 -0000 1.81 +++ server/as_environment.cpp 11 Jul 2007 00:16:38 -0000 1.82 @@ -17,7 +17,7 @@ // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // -/* $Id: as_environment.cpp,v 1.81 2007/07/01 10:54:19 bjacques Exp $ */ +/* $Id: as_environment.cpp,v 1.82 2007/07/11 00:16:38 strk Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -140,10 +140,17 @@ } // Check built-in constants. - if (varname == "_root" || varname == "_level0") { + if (varname == "_root") + { if ( retTarget ) *retTarget = NULL; // correct ?? return as_value(m_target->get_root_movie()); } + else if (varname.compare(0, 6, "_level") == 0 && varname.find_first_not_of("0123456789", 7) == string::npos ) + { + if ( retTarget ) *retTarget = NULL; // correct ?? + unsigned int levelno = atoi(varname.c_str()+6); + return VM::get().getRoot().getLevel(levelno).get(); + } VM& vm = VM::get(); as_object* global = vm.getGlobal(); Index: server/character.cpp =================================================================== RCS file: /sources/gnash/gnash/server/character.cpp,v retrieving revision 1.45 retrieving revision 1.46 diff -u -b -r1.45 -r1.46 --- server/character.cpp 9 Jul 2007 13:00:04 -0000 1.45 +++ server/character.cpp 11 Jul 2007 00:16:38 -0000 1.46 @@ -17,7 +17,7 @@ // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // -/* $Id: character.cpp,v 1.45 2007/07/09 13:00:04 strk Exp $ */ +/* $Id: character.cpp,v 1.46 2007/07/11 00:16:38 strk Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -179,11 +179,15 @@ } return parent; } - else if (name == "_level0" - || name == "_root") + else if (name == "_root") { return get_root_movie(); } + else if (name.compare(0, 6, "_level") == 0 && name.find_first_not_of("0123456789", 7) == string::npos ) + { + unsigned int levelno = atoi(name.c_str()+6); + return VM::get().getRoot().getLevel(levelno).get(); + } return NULL; } Index: server/sprite_instance.cpp =================================================================== RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v retrieving revision 1.294 retrieving revision 1.295 diff -u -b -r1.294 -r1.295 --- server/sprite_instance.cpp 2 Jul 2007 15:15:45 -0000 1.294 +++ server/sprite_instance.cpp 11 Jul 2007 00:16:38 -0000 1.295 @@ -1825,12 +1825,20 @@ val->set_as_object( VM::get().getRoot().get_root_movie() ); return true; } - if ( name == "_level0" ) + if (name.compare(0, 6, "_level") == 0 && name.find_first_not_of("0123456789", 7) == string::npos ) { - // TODO: handle _level# (any level) - val->set_as_object( VM::get().getRoot().get_root_movie() ); + unsigned int levelno = atoi(name.c_str()+6); + movie_instance* mo = VM::get().getRoot().getLevel(levelno).get(); + if ( mo ) + { + val->set_as_object(mo); return true; } + else + { + return false; + } + } if ( name == "this" ) { val->set_as_object( this ); _______________________________________________ Gnash-commit mailing list Gnash-commit@gnu.org http://lists.gnu.org/mailman/listinfo/gnash-commit