[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/sprite_instance.cpp
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog server/sprite_instance.cpp |
Date: |
Mon, 03 Sep 2007 13:18:14 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 07/09/03 13:18:14
Modified files:
. : ChangeLog
server : sprite_instance.cpp
Log message:
* server/sprite_instance.cpp (advance_sprite): don't use
DisplayList::advance against DisplayList copies, for which
invariant is not maintained.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4200&r2=1.4201
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.322&r2=1.323
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.4200
retrieving revision 1.4201
diff -u -b -r1.4200 -r1.4201
--- ChangeLog 3 Sep 2007 11:46:41 -0000 1.4200
+++ ChangeLog 3 Sep 2007 13:18:13 -0000 1.4201
@@ -1,3 +1,9 @@
+2007-09-03 Sandro Santilli <address@hidden>
+
+ * server/sprite_instance.cpp (advance_sprite): don't use
+ DisplayList::advance against DisplayList copies, for which
+ invariant is not maintained.
+
2007-09-03 Udo Giacomozzi <address@hidden>
* render_handler_agg_style.h: focal gradients now render correctly
Index: server/sprite_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.322
retrieving revision 1.323
diff -u -b -r1.322 -r1.323
--- server/sprite_instance.cpp 3 Sep 2007 11:41:54 -0000 1.322
+++ server/sprite_instance.cpp 3 Sep 2007 13:18:14 -0000 1.323
@@ -1700,6 +1700,25 @@
}
};
+/// A DisplayList visitor used to advance all non-unloaded characters
+class AdvancerVisitor {
+
+ float delta_time;
+
+public:
+ AdvancerVisitor(float dt)
+ :
+ delta_time(dt)
+ {}
+
+ void operator() (character* ch)
+ {
+ // don't unload already unloaded characters
+ if ( ! ch->isUnloaded() ) ch->advance(delta_time);
+ }
+
+};
+
//------------------------------------------------
// sprite_instance
@@ -2332,12 +2351,11 @@
// to need oldDisplayList again later, to extract the list of
// newly added characters
//
- //oldDisplayList.removeUnloaded(); // don't call removeUnloaded
- oldDisplayList.sort(); // this is to avoid failing assertions, since we
know characters might have changed depth...
+ {
+ AdvancerVisitor visitor(delta_time);
DisplayList stillAlive = oldDisplayList;
- stillAlive.clear_except(m_display_list, false);
- //log_msg(_("Advancing %d pre-existing children of %s"),
stillAlive.size(), getTargetPath().c_str());
- stillAlive.advance(delta_time);
+ stillAlive.visitAll(visitor);
+ }
// Now execute actions on this timeline, after actions
// in old childs timelines have been executed.
@@ -2355,12 +2373,12 @@
// the chars we're clearing have *not* been removed:
// we're simply doing internal work here...
//
+ {
+ AdvancerVisitor visitor(delta_time);
DisplayList newlyAdded = m_display_list;
- //log_msg(_("%s has %d current children and %d old children"),
getTargetPath().c_str(), m_display_list.size(), oldDisplayList.size());
- //newlyAdded.removeUnloaded();
- newlyAdded.clear(oldDisplayList, false);
- //log_msg(_("Advancing %d newly-added (after clearing) children of
%s"), newlyAdded.size(), getTargetPath().c_str());
- newlyAdded.advance(delta_time);
+ newlyAdded.clear(oldDisplayList, false); // keep only newly
added
+ newlyAdded.visitAll(visitor);
+ }
// Remember current state of the DisplayList for next iteration
oldDisplayList = m_display_list;
- [Gnash-commit] gnash ChangeLog server/sprite_instance.cpp, Sandro Santilli, 2007/09/03
- [Gnash-commit] gnash ChangeLog server/sprite_instance.cpp, Sandro Santilli, 2007/09/07
- [Gnash-commit] gnash ChangeLog server/sprite_instance.cpp, Sandro Santilli, 2007/09/07
- [Gnash-commit] gnash ChangeLog server/sprite_instance.cpp, Sandro Santilli, 2007/09/13
- [Gnash-commit] gnash ChangeLog server/sprite_instance.cpp, Zou Lunkai, 2007/09/20