gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog server/button_character_instanc...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/button_character_instanc...
Date: Tue, 15 Apr 2008 10:14:45 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  08/04/15 10:14:44

Modified files:
        .              : ChangeLog 
        server         : button_character_instance.cpp 

Log message:
        cleanup, indent and comment code looking for invalidation
        in set_current_state

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.6280&r2=1.6281
http://cvs.savannah.gnu.org/viewcvs/gnash/server/button_character_instance.cpp?cvsroot=gnash&r1=1.88&r2=1.89

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.6280
retrieving revision 1.6281
diff -u -b -r1.6280 -r1.6281
--- ChangeLog   15 Apr 2008 10:06:44 -0000      1.6280
+++ ChangeLog   15 Apr 2008 10:14:44 -0000      1.6281
@@ -1,3 +1,8 @@
+2008-04-15 Sandro Santilli <address@hidden>
+
+       * server/button_character_instance.cpp (set_current_state):
+         Cleanup, indent and comment code looking for invalidation.
+
 2008-04-15 Benjamin Wolsey <address@hidden>
        
        * testsuite/actionscript.all/Mouse.as: tests for mouse prototype

Index: server/button_character_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/button_character_instance.cpp,v
retrieving revision 1.88
retrieving revision 1.89
diff -u -b -r1.88 -r1.89
--- server/button_character_instance.cpp        15 Apr 2008 10:00:29 -0000      
1.88
+++ server/button_character_instance.cpp        15 Apr 2008 10:14:44 -0000      
1.89
@@ -619,35 +619,50 @@
        if (new_state == m_mouse_state)
                return;
                
+       typedef std::vector<character*> CharVect;
+
        // save current "display list"
-       std::vector<character*> old_list;
+       CharVect old_list;
        get_active_characters(old_list, m_mouse_state);
        
        // load new "display list" 
        // NOTE: We don't change state yet, so that set_invalidated() can 
        // load the current bounds first.
-       std::vector<character*> new_list;
+       CharVect new_list;
        get_active_characters(new_list, new_state);
                
-       // Call set_invalidated() in case some characters have been removed 
from the
-       // list. The effective equality check is done in the for loop below.
-       if (new_list.size() != old_list.size())
-               set_invalidated();              // something changed 
-  
   size_t old_count = old_list.size();
   size_t new_count = new_list.size();
-  for (size_t i=0; i<new_count; i++) {
 
+       // If the old and new lists have different size,
+       // then something obviously changed.
+       // (effective equality check done in next loop)
+       //
+       if (new_count != old_count) set_invalidated();
+  
+       // Otherwise, something changed if any character
+       // in the new set was not in the old one.
+       //
+       // In this case, we also restart the new character
+       // so it looks like we just placed it.
+       //
+       for (size_t i=0; i<new_count; i++)
+       {
        bool found=false;
-       for (size_t j=0; j<old_count; j++) { 
-               if (new_list[i] == old_list[j]) {
+               character* newch = new_list[i];
+               for (size_t j=0; j<old_count; j++)
+               { 
+                       character* oldch = old_list[j];
+                       if (newch == oldch)
+                       {
                                found=true;
                                break; 
                        }
                }
-               if (!found) {
+               if (!found)
+               {
                        // character (re-)appeared on stage -> restart!
-                       new_list[i]->restart();
+                       newch->restart();
                        set_invalidated();
                } 
        }




reply via email to

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