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 server/charact...


From: Udo Giacomozzi
Subject: [Gnash-commit] gnash server/sprite_instance.cpp server/charact...
Date: Mon, 05 May 2008 18:50:09 +0000

CVSROOT:        /cvsroot/gnash
Module name:    gnash
Changes by:     Udo Giacomozzi <udog>   08/05/05 18:50:09

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

Log message:
        * generic_character.cpp, sprite_instance.cpp, character.h, dlist.h, 
          dlist.cpp, sprite_instance.h: Implement omit_display(), real fix 
            for bug #22904   

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.529&r2=1.530
http://cvs.savannah.gnu.org/viewcvs/gnash/server/character.h?cvsroot=gnash&r1=1.142&r2=1.143
http://cvs.savannah.gnu.org/viewcvs/gnash/server/dlist.h?cvsroot=gnash&r1=1.70&r2=1.71
http://cvs.savannah.gnu.org/viewcvs/gnash/server/dlist.cpp?cvsroot=gnash&r1=1.122&r2=1.123
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.h?cvsroot=gnash&r1=1.193&r2=1.194
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.6509&r2=1.6510

Patches:
Index: server/sprite_instance.cpp
===================================================================
RCS file: /cvsroot/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.529
retrieving revision 1.530
diff -u -b -r1.529 -r1.530
--- server/sprite_instance.cpp  3 May 2008 09:21:21 -0000       1.529
+++ server/sprite_instance.cpp  5 May 2008 18:50:06 -0000       1.530
@@ -3341,6 +3341,14 @@
   clear_invalidated();
 }
 
+void sprite_instance::omit_display()
+{
+  if (m_child_invalidated)
+    m_display_list.omit_display();
+    
+  clear_invalidated();
+}
+
 bool
 sprite_instance::attachCharacter(character& newch, int depth)
 { 

Index: server/character.h
===================================================================
RCS file: /cvsroot/gnash/gnash/server/character.h,v
retrieving revision 1.142
retrieving revision 1.143
diff -u -b -r1.142 -r1.143
--- server/character.h  28 Apr 2008 09:04:02 -0000      1.142
+++ server/character.h  5 May 2008 18:50:06 -0000       1.143
@@ -1071,6 +1071,10 @@
   ///
   virtual void dump_character_tree(const std::string prefix) const; 
   
+  /// Called instead of display() when the character is not visible on stage.
+  /// Used to clear the invalidated flags.
+  virtual void omit_display() { clear_invalidated(); }; 
+  
   /// Callback invoked whenever a character is placed on stage
   //
   /// This function must be called when the character is placed on

Index: server/dlist.h
===================================================================
RCS file: /cvsroot/gnash/gnash/server/dlist.h,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -b -r1.70 -r1.71
--- server/dlist.h      4 May 2008 09:07:09 -0000       1.70
+++ server/dlist.h      5 May 2008 18:50:06 -0000       1.71
@@ -239,6 +239,8 @@
        /// Lower depths are obscured by higher depths.
        void display();
 
+       void omit_display();
+
        /// May return NULL.
        character* get_character_at_depth(int depth);
 

Index: server/dlist.cpp
===================================================================
RCS file: /cvsroot/gnash/gnash/server/dlist.cpp,v
retrieving revision 1.122
retrieving revision 1.123
diff -u -b -r1.122 -r1.123
--- server/dlist.cpp    30 Apr 2008 02:33:05 -0000      1.122
+++ server/dlist.cpp    5 May 2008 18:50:07 -0000       1.123
@@ -624,14 +624,14 @@
             if (mask->boundsInClippingArea())
               mask->display();
             else
-              mask->clear_invalidated();  // avoid stale flag
+              mask->omit_display();
               
             render::end_submit_mask();
             
             if (ch->boundsInClippingArea())
               ch->display();
             else
-              ch->clear_invalidated();  // avoid stale flag
+              ch->omit_display();
               
             render::disable_mask();
             
@@ -661,8 +661,7 @@
         // check for non-mask hiden characters
         if( !renderAsMask && (ch->get_visible() == false))
         {
-            // Avoid stale old_invalidated_rect
-            ch->clear_invalidated(); 
+            ch->omit_display();
             // Don't display non-mask hidden characters
             continue;
         }
@@ -686,7 +685,7 @@
         if (ch->boundsInClippingArea())
           ch->display();        
         else 
-          ch->clear_invalidated();  // avoid stale flag
+          ch->omit_display();
         
         // Notify the renderer that mask drawing has finished.
         if (ch->isMaskLayer())
@@ -701,6 +700,18 @@
         clipDepthStack.pop();
         render::disable_mask();
     }
+    
+    
+}
+
+void
+DisplayList::omit_display()
+{
+  iterator it = beginNonRemoved(_charsByDepth);
+  for(iterator endIt = _charsByDepth.end(); it != endIt; ++it) {
+    character* ch = it->get();
+    ch->omit_display();
+  }
 }
 
 /*public*/

Index: server/sprite_instance.h
===================================================================
RCS file: /cvsroot/gnash/gnash/server/sprite_instance.h,v
retrieving revision 1.193
retrieving revision 1.194
diff -u -b -r1.193 -r1.194
--- server/sprite_instance.h    4 May 2008 09:13:36 -0000       1.193
+++ server/sprite_instance.h    5 May 2008 18:50:07 -0000       1.194
@@ -317,6 +317,8 @@
        /// Display (render?) this Sprite/MovieClip, unless invisible
        void    display();
 
+       void omit_display();
+
        /// Swap depth of the given characters in the DisplayList
        //
        /// See DisplayList::swapDepths for more info

Index: ChangeLog
===================================================================
RCS file: /cvsroot/gnash/gnash/ChangeLog,v
retrieving revision 1.6509
retrieving revision 1.6510
diff -u -b -r1.6509 -r1.6510
--- ChangeLog   5 May 2008 18:12:31 -0000       1.6509
+++ ChangeLog   5 May 2008 18:50:08 -0000       1.6510
@@ -1,5 +1,11 @@
 2008-05-05 Udo Giacomozzi <address@hidden>
 
+       * generic_character.cpp, sprite_instance.cpp, character.h, dlist.h, 
+         dlist.cpp, sprite_instance.h: Implement omit_display(), real fix 
+    for bug #22904     
+
+2008-05-05 Udo Giacomozzi <address@hidden>
+
        * backend/render_handler_agg.cpp: Don't try to access line style
          for paths that have none      
 




reply via email to

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