[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash server/sprite_instance.cpp server/charact...,
Udo Giacomozzi <=