gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog server/character.cpp server/cha...


From: Udo Giacomozzi
Subject: [Gnash-commit] gnash ChangeLog server/character.cpp server/cha...
Date: Tue, 22 May 2007 14:23:51 +0000

CVSROOT:        /cvsroot/gnash
Module name:    gnash
Changes by:     Udo Giacomozzi <udog>   07/05/22 14:23:51

Modified files:
        .              : ChangeLog 
        server         : character.cpp character.h cxform.h dlist.cpp 
                         sprite_instance.cpp 

Log message:
        some invalidated bounds fixes

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.3305&r2=1.3306
http://cvs.savannah.gnu.org/viewcvs/gnash/server/character.cpp?cvsroot=gnash&r1=1.41&r2=1.42
http://cvs.savannah.gnu.org/viewcvs/gnash/server/character.h?cvsroot=gnash&r1=1.76&r2=1.77
http://cvs.savannah.gnu.org/viewcvs/gnash/server/cxform.h?cvsroot=gnash&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/gnash/server/dlist.cpp?cvsroot=gnash&r1=1.65&r2=1.66
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.272&r2=1.273

Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/gnash/gnash/ChangeLog,v
retrieving revision 1.3305
retrieving revision 1.3306
diff -u -b -r1.3305 -r1.3306
--- ChangeLog   22 May 2007 13:56:32 -0000      1.3305
+++ ChangeLog   22 May 2007 14:23:50 -0000      1.3306
@@ -1,4 +1,15 @@
+2007-05-22 Udo Giacomozzi <address@hidden>
+
+       * server/character.{h,cpp}: Added preprocessor code to analyze 
+         calls to set_invalidated() more easily.
+       * server/cxform.h: Implemented == operator
+       * server/dlist.cpp: inherit invalidated bounds when replacing a
+         character
+       * server/sprite_instance.cpp: avoid call to set_invalidated()
+    (of parent) when replacing a char                                  
+                
 2007-05-22 Ann Barcomb <address@hidden>
+
        * doc/C/usermanual/*: Added files for the new user manual.
        * doc/C/app_authors.xml: Added a file which is used in the user manual
          but might be cross-referenced by other documents.

Index: server/character.cpp
===================================================================
RCS file: /cvsroot/gnash/gnash/server/character.cpp,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -b -r1.41 -r1.42
--- server/character.cpp        3 May 2007 09:54:45 -0000       1.41
+++ server/character.cpp        22 May 2007 14:23:51 -0000      1.42
@@ -17,7 +17,7 @@
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 // 
 
-/* $Id: character.cpp,v 1.41 2007/05/03 09:54:45 udog Exp $ */
+/* $Id: character.cpp,v 1.42 2007/05/22 14:23:51 udog Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -33,6 +33,8 @@
 
 #include <boost/algorithm/string/case_conv.hpp>
 
+#undef set_invalidated
+
 namespace gnash
 {
 
@@ -185,6 +187,12 @@
 void
 character::set_invalidated()
 {
+       set_invalidated("unknown", -1);
+}
+
+void
+character::set_invalidated(const char* debug_file, int debug_line)
+{
   // Set the invalidated-flag of the parent. Note this does not mean that
   // the parent must re-draw itself, it just means that one of it's childs
   // needs to be re-drawn.
@@ -202,6 +210,11 @@
        {
                m_invalidated = true;
                
+               #ifdef DEBUG_SET_INVALIDATED
+               printf("%p set_invalidated() of %s in %s:%d\n", this, 
get_name().c_str(),
+                       debug_file, debug_line);
+               #endif
+               
                // NOTE: we need to set snap_distance in order to avoid too 
tight 
                // invalidated ranges. The GUI chooses the appropriate distance 
in base
                // of various parameters but for this internal ranges list we 
don't know
@@ -228,6 +241,13 @@
   } 
 }
 
+void
+character::extend_invalidated_bounds(const InvalidatedRanges& ranges)
+{
+       set_invalidated(__FILE__, __LINE__);
+       m_old_invalidated_ranges.add(ranges);
+}
+
 //---------------------------------------------------------------------
 //
 // Shared ActionScript getter-setters

Index: server/character.h
===================================================================
RCS file: /cvsroot/gnash/gnash/server/character.h,v
retrieving revision 1.76
retrieving revision 1.77
diff -u -b -r1.76 -r1.77
--- server/character.h  21 May 2007 10:10:59 -0000      1.76
+++ server/character.h  22 May 2007 14:23:51 -0000      1.77
@@ -18,7 +18,7 @@
 //
 //
 
-/* $Id: character.h,v 1.76 2007/05/21 10:10:59 udog Exp $ */
+/* $Id: character.h,v 1.77 2007/05/22 14:23:51 udog Exp $ */
 
 #ifndef GNASH_CHARACTER_H
 #define GNASH_CHARACTER_H
@@ -46,6 +46,8 @@
 #include <cassert>
 #include <typeinfo>
 
+//#define DEBUG_SET_INVALIDATED 1
+
 // Forward declarations
 namespace gnash {
        class sprite_instance;
@@ -360,7 +362,7 @@
        {
            assert(m.is_valid());
            if (!(m == m_matrix)) {
-             set_invalidated();
+             set_invalidated(__FILE__, __LINE__);
              m_matrix = m;
            }
        }
@@ -383,14 +385,16 @@
     const cxform&      get_cxform() const { return m_color_transform; }
     void       set_cxform(const cxform& cx) 
     { 
-      set_invalidated(); 
+      if (!(cx == m_color_transform)) {
+       set_invalidated(__FILE__, __LINE__);
       m_color_transform = cx;
     }
+    }
     void       concatenate_cxform(const cxform& cx) { 
m_color_transform.concatenate(cx); }
     void       concatenate_matrix(const matrix& m) { m_matrix.concatenate(m); }
     float      get_ratio() const { return m_ratio; }
     void       set_ratio(float f) {
-      if (f!=m_ratio) set_invalidated(); 
+      if (f!=m_ratio) set_invalidated(__FILE__, __LINE__); 
       m_ratio = f;       
     }
 
@@ -720,7 +724,7 @@
 
     // TODO: why is this virtual ??
     virtual void       set_visible(bool visible) {
-      if (m_visible!=visible) set_invalidated();  
+      if (m_visible!=visible) set_invalidated(__FILE__, __LINE__);  
       m_visible = visible;      
     }
 
@@ -847,6 +851,14 @@
        /// @see \ref region_update
        ///
        void set_invalidated();
+       void set_invalidated(const char* debug_file, int debug_line);
+       
+       
+       /// Calls set_invalidated() and extends old_invalidated_ranges to the
+       /// given value so that also this area gets re-rendered (used when
+       /// replacing characters).      
+       void extend_invalidated_bounds(const InvalidatedRanges& ranges);
+       
        
        /// Called by a child to signalize it has changed visibily. The
        /// difference to set_invalidated() is that *this* character does
@@ -968,6 +980,9 @@
 
 }      // end namespace gnash
 
+#ifdef DEBUG_SET_INVALIDATED
+#define set_invalidated() set_invalidated(__FILE__, __LINE__)
+#endif
 
 #endif // GNASH_CHARACTER_H
 

Index: server/cxform.h
===================================================================
RCS file: /cvsroot/gnash/gnash/server/cxform.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- server/cxform.h     19 May 2007 22:12:51 -0000      1.5
+++ server/cxform.h     22 May 2007 14:23:51 -0000      1.6
@@ -39,6 +39,7 @@
 {
 public:
 
+    friend bool operator== (const cxform&, const cxform&);
     friend std::ostream& operator<< (std::ostream& os, const cxform& cx);
 
     /// [RGBA][multiply, add]
@@ -85,6 +86,19 @@
 };
 
 
+inline bool operator== (const cxform& a, const cxform& b)
+{
+       return  
+               a.m_[0][0] == b.m_[0][0] &&
+               a.m_[0][1] == b.m_[0][1] &&
+               a.m_[1][0] == b.m_[1][0] &&
+               a.m_[1][1] == b.m_[1][1] &&
+               a.m_[2][0] == b.m_[2][0] &&
+               a.m_[2][1] == b.m_[2][1] &&
+               a.m_[3][0] == b.m_[3][0] &&
+               a.m_[3][1] == b.m_[3][1];
+}
+
 
 
 }      // namespace gnash

Index: server/dlist.cpp
===================================================================
RCS file: /cvsroot/gnash/gnash/server/dlist.cpp,v
retrieving revision 1.65
retrieving revision 1.66
diff -u -b -r1.65 -r1.66
--- server/dlist.cpp    15 May 2007 07:38:15 -0000      1.65
+++ server/dlist.cpp    22 May 2007 14:23:51 -0000      1.66
@@ -195,15 +195,24 @@
        if ( it == _characters.end() || (*it)->get_depth() != depth )
        {
                //log_msg(_("place_character: new character at depth %d"), 
depth);
+               
                // add the new char
                _characters.insert(it, DisplayItem(ch));
        }
        else
        {
                //log_msg(_("place_character: replacing existing character at 
depth %d"), depth);
+               
+               // remember bounds of old char
+               InvalidatedRanges old_ranges;   
+               (*it)->add_invalidated_bounds(old_ranges, true);        
+       
                (*it)->unload();
                // replace existing char
                *it = DisplayItem(ch);
+               
+               // extend invalidated bounds
+               ch->extend_invalidated_bounds(old_ranges);                      
        
        }
 
        // Give life to this instance
@@ -283,6 +292,9 @@
        }
        else
        {
+       
+               InvalidatedRanges old_ranges;
+       
                if (!use_cxform)
                {
                        // Use the cxform from the old character.
@@ -295,9 +307,15 @@
                        ch->set_matrix((*it)->get_matrix());
                }
 
+               // remember bounds of old char
+               (*it)->add_invalidated_bounds(old_ranges, true);                
+
                // replace existing char
                *it = di;
 
+               // extend invalidated bounds
+               ch->extend_invalidated_bounds(old_ranges);                      
        
+
                // TODO: check: Shouldn't we construct the new object here too ?
                //ch->construct();
        }

Index: server/sprite_instance.cpp
===================================================================
RCS file: /cvsroot/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.272
retrieving revision 1.273
diff -u -b -r1.272 -r1.273
--- server/sprite_instance.cpp  19 May 2007 22:12:51 -0000      1.272
+++ server/sprite_instance.cpp  22 May 2007 14:23:51 -0000      1.273
@@ -3163,8 +3163,6 @@
            ch->set_name(name);
        }
 
-        set_invalidated();
-
     m_display_list.replace_character(
        ch,
        depth,




reply via email to

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