[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash/server dlist.cpp sprite_instance.cpp
From: |
Zou Lunkai |
Subject: |
[Gnash-commit] gnash/server dlist.cpp sprite_instance.cpp |
Date: |
Wed, 22 Aug 2007 04:54:57 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Zou Lunkai <zoulunkai> 07/08/22 04:54:57
Modified files:
server : dlist.cpp sprite_instance.cpp
Log message:
* server/dlist.cpp, server/sprite_instance.cpp: handle hiden characters
as masks, passed UdoG's test files.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/server/dlist.cpp?cvsroot=gnash&r1=1.76&r2=1.77
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.309&r2=1.310
Patches:
Index: dlist.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/dlist.cpp,v
retrieving revision 1.76
retrieving revision 1.77
diff -u -b -r1.76 -r1.77
--- dlist.cpp 21 Aug 2007 11:22:17 -0000 1.76
+++ dlist.cpp 22 Aug 2007 04:54:56 -0000 1.77
@@ -771,12 +771,23 @@
character* ch = it->get();
assert(ch);
- if (ch->get_visible() == false)
+ // Check if this charater or any of its parents is a mask.
+ // Characters act as masks should always be rendered to the
+ // mask buffer despite their visibility.
+ character * parent = ch->get_parent();
+ bool renderAsMask = ch->isMask();
+ while(!renderAsMask && parent)
{
- // avoid stale old_invalidated_rect
+ renderAsMask = parent->isMask();
+ parent = parent->get_parent();
+ }
+
+ // check for non-mask hiden characters
+ if( !renderAsMask && (ch->get_visible() == false))
+ {
+ // Avoid stale old_invalidated_rect
ch->clear_invalidated();
- // Don't display.
- // TODO: test invisible characters as masks
+ // Don't display non-mask hiden characters
continue;
}
Index: sprite_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.309
retrieving revision 1.310
diff -u -b -r1.309 -r1.310
--- sprite_instance.cpp 17 Aug 2007 18:02:35 -0000 1.309
+++ sprite_instance.cpp 22 Aug 2007 04:54:56 -0000 1.310
@@ -2723,14 +2723,13 @@
{
//GNASH_REPORT_FUNCTION;
- if (get_visible() == false)
- {
- // We're invisible, so don't display!
-
- // Note: dlist.cpp will avoid to even call display() so this
will probably
- // never happen.
- return;
- }
+ // Note:
+ // DisplayList::Display() will take care of the visibility checking.
+ //
+ // Whether a character should be rendered or not is dependent on its
paraent.
+ // i.e. if its parent is a mask, this character should be rendered to
the mask
+ // buffer even it is invisible.
+ //
// check if the sprite (and it's childs) needs to be drawn
InvalidatedRanges ranges;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash/server dlist.cpp sprite_instance.cpp,
Zou Lunkai <=