gnash-commit
[Top][All Lists]
Advanced

[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);
 




reply via email to

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