gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog server/swf/DoInitActionTag.h


From: Zou Lunkai
Subject: [Gnash-commit] gnash ChangeLog server/swf/DoInitActionTag.h
Date: Tue, 27 Nov 2007 05:34:23 +0000

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 <address@hidden>
+
+       * 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 <address@hidden>
 
        * 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




reply via email to

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