[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: |
Tue, 04 Sep 2007 22:59:30 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 07/09/04 22:59:29
Modified files:
. : ChangeLog
server : sprite_instance.cpp
Log message:
* server/sprite_instance.cpp: always check if we've been
unloaded
by effect of a call to on_event(). Fixes bug #20974.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4221&r2=1.4222
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.325&r2=1.326
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.4221
retrieving revision 1.4222
diff -u -b -r1.4221 -r1.4222
--- ChangeLog 4 Sep 2007 22:15:56 -0000 1.4221
+++ ChangeLog 4 Sep 2007 22:59:29 -0000 1.4222
@@ -1,5 +1,10 @@
2007-09-04 Sandro Santilli <address@hidden>
+ * server/sprite_instance.cpp: always check if we've been unloaded
+ by effect of a call to on_event(). Fixes bug #20974.
+
+2007-09-04 Sandro Santilli <address@hidden>
+
* server/parser/sprite_definition.cpp (read): simplify handling of
malformed sprite definition (last SHOWFRAME not followed by END).
Fixes high CPU use and inresponsiveness while playing
Index: server/sprite_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.325
retrieving revision 1.326
diff -u -b -r1.325 -r1.326
--- server/sprite_instance.cpp 4 Sep 2007 20:50:00 -0000 1.325
+++ server/sprite_instance.cpp 4 Sep 2007 22:59:29 -0000 1.326
@@ -2269,6 +2269,8 @@
{
//GNASH_REPORT_FUNCTION;
+ assert(!isUnloaded());
+
// Process any pending loadVariables request
processCompletedLoadVariableRequests();
@@ -2278,6 +2280,13 @@
if (m_on_event_load_called)
{
on_event(event_id::ENTER_FRAME);
+ if ( isUnloaded() )
+ {
+ log_debug("%s enterFrame event handler unloaded self",
getTarget().c_str());
+ // TODO: check if we should still advance the frame
counter
+ // can be checked, if we're still reachable, by
fetching _currentframe.
+ return;
+ }
}
#ifdef GNASH_DEBUG
@@ -2397,6 +2406,11 @@
log_msg(_("Calling ONLOAD event"));
#endif
on_event(event_id::LOAD); // clip onload
+ if (isUnloaded())
+ {
+ log_debug("%s load event handler unloaded self",
getTarget().c_str());
+ return;
+ }
if (m_has_key_event)
{
@@ -3343,6 +3357,8 @@
void
sprite_instance::construct()
{
+ assert(!isUnloaded());
+
_origTarget = getTarget();
#ifdef GNASH_DEBUG
@@ -3356,6 +3372,12 @@
assert( oldDisplayList.empty() );
on_event(event_id::CONSTRUCT);
+ if (isUnloaded())
+ {
+ log_debug("%s construct event handler unloaded self",
getTarget().c_str());
+ // TODO: check if we should still execute frame tags (dlist
ones in particular)
+ return;
+ }
execute_frame_tags(0, TAG_DLIST|TAG_ACTION);
- [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