CVSROOT: /sources/gnash Module name: gnash Changes by: Zou Lunkai <zoulunkai> 07/11/27 05:34:23
Modified files: . : ChangeLog server/swf : DoInitActionTag.h Log message: * server/swf/DoInitActionTag.h: make sure DoInitAction tag executed only once. Ready to drop sprite_instance::m_init_actions_executed. Executing DoInitAction or not is independent on the life of associated sprites. CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4973&r2=1.4974 http://cvs.savannah.gnu.org/viewcvs/gnash/server/swf/DoInitActionTag.h?cvsroot=gnash&r1=1.1&r2=1.2 Patches: Index: ChangeLog =================================================================== RCS file: /sources/gnash/gnash/ChangeLog,v retrieving revision 1.4973 retrieving revision 1.4974 diff -u -b -r1.4973 -r1.4974 --- ChangeLog 26 Nov 2007 21:53:00 -0000 1.4973 +++ ChangeLog 27 Nov 2007 05:34:23 -0000 1.4974 @@ -1,3 +1,9 @@ +2007-11-27 Zou Lunkai <[EMAIL PROTECTED]> + + * server/swf/DoInitActionTag.h: make sure DoInitAction tag executed only + once. Ready to drop sprite_instance::m_init_actions_executed. Executing + DoInitAction or not is independent on the life of associated sprites. + 2007-11-26 Sandro Santilli <[EMAIL PROTECTED]> * server/asobj/NetStreamFfmpeg.{cpp,h}: more AVPacket wrapping work. Index: server/swf/DoInitActionTag.h =================================================================== RCS file: /sources/gnash/gnash/server/swf/DoInitActionTag.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -b -r1.1 -r1.2 --- server/swf/DoInitActionTag.h 23 Nov 2007 12:21:27 -0000 1.1 +++ server/swf/DoInitActionTag.h 27 Nov 2007 05:34:23 -0000 1.2 @@ -30,7 +30,7 @@ #include "swf.h" // for tag_type definition #include "action_buffer.h" // for composition #include "sprite_instance.h" // for inlines -//#include "tu_types.h" // for uint16_t, uint32_t etc. definition +#include "ExecutableCode.h" // for GlobalCode // Forward declarations namespace gnash { @@ -50,6 +50,7 @@ public: DoInitActionTag() + :m_is_executed(false) {} /// Read a DoInitAction block from the stream @@ -61,12 +62,26 @@ virtual void execute_state(sprite_instance* m) const { - m->execute_init_action_buffer(m_buf); + //m->execute_init_action_buffer(m_buf); + if(! m_is_executed) + { + m_is_executed = true; + std::auto_ptr<ExecutableCode> code ( new GlobalCode(m_buf, m) ); + movie_root& root = VM::get().getRoot(); + root.pushAction(code, movie_root::apINIT); + } } virtual void execute(sprite_instance* m) const { - m->execute_init_action_buffer(m_buf); + //m->execute_init_action_buffer(m_buf); + if(! m_is_executed) + { + m_is_executed = true; + std::auto_ptr<ExecutableCode> code ( new GlobalCode(m_buf, m) ); + movie_root& root = VM::get().getRoot(); + root.pushAction(code, movie_root::apINIT); + } } // Tell the caller that we are an action tag. @@ -92,6 +107,7 @@ private: action_buffer m_buf; + mutable bool m_is_executed; }; } // namespace gnash::SWF _______________________________________________ Gnash-commit mailing list Gnash-commit@gnu.org http://lists.gnu.org/mailman/listinfo/gnash-commit