gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash/server sprite_instance.cpp sprite_instance.h


From: Vitaly Alexeev
Subject: [Gnash-commit] gnash/server sprite_instance.cpp sprite_instance.h
Date: Wed, 23 Aug 2006 12:04:24 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Vitaly Alexeev <alexeev>        06/08/23 12:04:24

Modified files:
        server         : sprite_instance.cpp sprite_instance.h 

Log message:
        The second attempt to fix goto_frame() bug

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.38&r2=1.39
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.h?cvsroot=gnash&r1=1.17&r2=1.18

Patches:
Index: sprite_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -b -r1.38 -r1.39
--- sprite_instance.cpp 22 Aug 2006 19:15:45 -0000      1.38
+++ sprite_instance.cpp 23 Aug 2006 12:04:24 -0000      1.39
@@ -1236,6 +1236,10 @@
 
        // Advance everything in the display list.
        m_display_list.advance(delta_time);
+
+       execute_actions(&m_as_environment, m_goto_frame_action_list);
+       m_goto_frame_action_list.resize(0);
+
 }
 
 // _root movieclip advance
@@ -1470,7 +1474,6 @@
 //     IF_VERBOSE_DEBUG(log_msg("sprite::goto_frame(%d)\n", 
target_frame_number));//xxxxx
 
        //      target_frame_number = iclamp(target_frame_number, 0, 
m_def->get_frame_count() - 1);
-
        // Macromedia Flash ignores goto_frame(bad_frame)
        if (target_frame_number > m_def->get_frame_count() - 1 ||
                        target_frame_number == m_current_frame) // to prevent 
infinitive recursion
@@ -1527,7 +1530,10 @@
        // that already is executed. 
        // Macromedia Flash do goto_frame then run actions from this frame.
        // We do too.
-       do_actions();
+
+   m_goto_frame_action_list = m_action_list; //.assign(m_action_list.begin(), 
m_action_list.end());
+        m_action_list.resize(0);
+
 }
 
 bool sprite_instance::goto_labeled_frame(const char* label)

Index: sprite_instance.h
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- sprite_instance.h   19 Aug 2006 15:01:54 -0000      1.17
+++ sprite_instance.h   23 Aug 2006 12:04:24 -0000      1.18
@@ -487,6 +487,7 @@
 
        //std::vector<action_buffer*>   m_action_list;
        std::vector<action_buffer*>     m_action_list;
+       std::vector<action_buffer*>     m_goto_frame_action_list;
 
        play_state      m_play_state;
        size_t          m_current_frame;




reply via email to

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