CVSROOT: /sources/gnash Module name: gnash Changes by: Sandro Santilli <strk> 07/11/27 11:05:28
Modified files: . : ChangeLog server : character.cpp sprite_instance.cpp testsuite/actionscript.all: MovieClip.as Log message: Don't abort if a character is unloaded twice (once as a consequence of unloading parent and one on itself). Test added to MovieClip.as which would abort previous gnash versions. CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4979&r2=1.4980 http://cvs.savannah.gnu.org/viewcvs/gnash/server/character.cpp?cvsroot=gnash&r1=1.64&r2=1.65 http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.397&r2=1.398 http://cvs.savannah.gnu.org/viewcvs/gnash/testsuite/actionscript.all/MovieClip.as?cvsroot=gnash&r1=1.102&r2=1.103 Patches: Index: ChangeLog =================================================================== RCS file: /sources/gnash/gnash/ChangeLog,v retrieving revision 1.4979 retrieving revision 1.4980 diff -u -b -r1.4979 -r1.4980 --- ChangeLog 27 Nov 2007 09:36:31 -0000 1.4979 +++ ChangeLog 27 Nov 2007 11:05:27 -0000 1.4980 @@ -1,5 +1,15 @@ 2007-11-27 Sandro Santilli <[EMAIL PROTECTED]> + * server/character.cpp (unload): don't abort if the character + is attempted to be unloaded twice. + * server/sprite_instance.cpp: don't abort if the character + is attempted to be unloaded twice. + * testsuite/actionscript.all/MovieClip.as: test double unload + of a character (once triggered by unload of parent and one + direct unload). + +2007-11-27 Sandro Santilli <[EMAIL PROTECTED]> + * testsuite/actionscript.all/MovieClip.as: fix bogus check calls, reveiling a bunch of failures in gnash... Index: server/character.cpp =================================================================== RCS file: /sources/gnash/gnash/server/character.cpp,v retrieving revision 1.64 retrieving revision 1.65 diff -u -b -r1.64 -r1.65 --- server/character.cpp 20 Nov 2007 00:44:03 -0000 1.64 +++ server/character.cpp 27 Nov 2007 11:05:28 -0000 1.65 @@ -17,7 +17,7 @@ // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // -/* $Id: character.cpp,v 1.64 2007/11/20 00:44:03 cmusick Exp $ */ +/* $Id: character.cpp,v 1.65 2007/11/27 11:05:28 strk Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -640,12 +640,11 @@ bool character::unload() { - assert(!_unloaded); // don't unload characters twice ! - - //log_msg(_("Queuing unload event for character %p"), this); - //on_event(event_id::UNLOAD); - //bool hasEvent = queueEventHandler(event_id::UNLOAD); + if ( ! _unloaded ) + { queueEvent(event_id::UNLOAD, movie_root::apDOACTION); + } + bool hasEvent = hasEventHandler(event_id::UNLOAD); _unloaded = true; Index: server/sprite_instance.cpp =================================================================== RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v retrieving revision 1.397 retrieving revision 1.398 diff -u -b -r1.397 -r1.398 --- server/sprite_instance.cpp 26 Nov 2007 20:43:47 -0000 1.397 +++ server/sprite_instance.cpp 27 Nov 2007 11:05:28 -0000 1.398 @@ -3600,7 +3600,6 @@ bool sprite_instance::unload() { - assert(!isUnloaded()); #ifdef GNASH_DEBUG log_debug(_("Unloading sprite '%s'"), getTargetPath().c_str()); #endif Index: testsuite/actionscript.all/MovieClip.as =================================================================== RCS file: /sources/gnash/gnash/testsuite/actionscript.all/MovieClip.as,v retrieving revision 1.102 retrieving revision 1.103 diff -u -b -r1.102 -r1.103 --- testsuite/actionscript.all/MovieClip.as 27 Nov 2007 09:29:00 -0000 1.102 +++ testsuite/actionscript.all/MovieClip.as 27 Nov 2007 11:05:28 -0000 1.103 @@ -20,7 +20,7 @@ // compile this test case with Ming makeswf, and then // execute it like this gnash -1 -r 0 -v out.swf -rcsid="$Id: MovieClip.as,v 1.102 2007/11/27 09:29:00 strk Exp $"; +rcsid="$Id: MovieClip.as,v 1.103 2007/11/27 11:05:28 strk Exp $"; #include "check.as" @@ -452,7 +452,7 @@ softref3 = _root.createEmptyMovieClip("hardref3", 80); softref3child = softref3.createEmptyMovieClip("hardref3child", 1); softref3child2 = softref3.createEmptyMovieClip("hardref3child2", 2); -softref3child.onUnload = function() { /* note(this+".onUnload called");*/ }; +softref3child.onUnload = function() { check_equals(this._target, '/hardref3/hardref3child'); note(this+".onUnload called"); }; hardref2.onUnload = function() { /*note(this+".onUnload called");*/ }; check_equals(typeof(hardref), 'movieclip'); check_equals(typeof(softref), 'movieclip'); @@ -522,6 +522,7 @@ check_equals(softref3child.member, '3child'); check_equals(softref3child._target, '/hardref3/hardref3child'); check_equals(softref3child.getDepth(), 1); +removeMovieClip(softref3child); // using ActionRemoveClip (0x25) xcheck_equals(softref3child2.member, '3child2'); xcheck_equals(softref3child2._target, '/hardref3/hardref3child2'); xcheck_equals(softref3child2.getDepth(), 2); _______________________________________________ Gnash-commit mailing list Gnash-commit@gnu.org http://lists.gnu.org/mailman/listinfo/gnash-commit