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: Sun, 11 Nov 2007 18:01:12 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  07/11/11 18:01:12

Modified files:
        .              : ChangeLog 
        server         : sprite_instance.cpp 

Log message:
        (sprite_attach_movie): mark the character as dynamic before placing on 
stage
        so stagePlacementCallback knows about that);
        (stagePlacementCallback): don't construct as object here, let that be 
done
        on INITIALIZE event;
        (on_event): construct as ActionScript object before running INITIALIZE 
handlers.
        Fixes bug #21556 (youtube regression) - shows how weak our testsuite is 
in this
        reguard...

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4827&r2=1.4828
http://cvs.savannah.gnu.org/viewcvs/gnash/server/sprite_instance.cpp?cvsroot=gnash&r1=1.380&r2=1.381

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.4827
retrieving revision 1.4828
diff -u -b -r1.4827 -r1.4828
--- ChangeLog   10 Nov 2007 23:07:33 -0000      1.4827
+++ ChangeLog   11 Nov 2007 18:01:12 -0000      1.4828
@@ -1,3 +1,12 @@
+2007-11-11 Sandro Santilli <address@hidden>
+
+       * server/sprite_instance.cpp (sprite_attach_movie): mark the character
+         as dynamic before placing on stage (so stagePlacementCallback knows
+         about that); (stagePlacementCallback): don't construct as object
+         here, let that be done on INITIALIZE event; (on_event): construct
+         as ActionScript object before running INITIALIZE handlers.
+         Fixes bug #21556 (youtube regression).
+
 2007-11-10 Sandro Santilli <address@hidden>
 
        * server/sprite_instance.cpp (goto_frame): always set

Index: server/sprite_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/sprite_instance.cpp,v
retrieving revision 1.380
retrieving revision 1.381
diff -u -b -r1.380 -r1.381
--- server/sprite_instance.cpp  10 Nov 2007 23:07:34 -0000      1.380
+++ server/sprite_instance.cpp  11 Nov 2007 18:01:12 -0000      1.381
@@ -201,6 +201,7 @@
 #endif // ndef GNASH_USE_GC
 
        newch->set_name(newname.c_str());
+       newch->setDynamic();
 
        // place_character() will set depth on newch
        if ( ! sprite->attachCharacter(*newch, depth_val) )
@@ -209,8 +210,6 @@
                return rv;
        }
 
-       newch->setDynamic();
-
        /// Properties must be copied *after* the call to attachCharacter
        /// because attachCharacter() will reset matrix !!
        if (fn.nargs > 3 ) {
@@ -2148,7 +2147,7 @@
                return false;
        }
 
-#if 0
+#if 1
        if ( id.m_id == event_id::INITIALIZE )
        {
                // Construct as ActionScript object.
@@ -3378,16 +3377,25 @@
        // We *might* avoid this, but better safe then sorry
        m_def->ensure_frame_loaded(0);
 
-       constructAsScriptObject();
-       // TODO: should we execute these immediately if jumping
-       //       due to a gotoFrame ?
+       // We execute events immediately when the stage-placed character is 
dynamic.
+       // This is becase we assume that this means that the character is 
placed during
+       // processing of actions (opposed that during advancement iteration).
+       //
+       // A more general implementation might ask movie_root about it's state
+       // (iterating or processing actions?)
+       // Another possibility to inspect could be letting movie_root decide
+       // when to really queue and when rather to execute immediately the 
+       // events with priority INITIALIZE or CONSTRUCT ...
+       //
        if ( isDynamic() )
        {
+               //log_debug("Sprite %s is dynamic, sending INITIALIZE and 
CONSTRUCT events immediately", getTarget().c_str());
                on_event(event_id::INITIALIZE);
                on_event(event_id::CONSTRUCT);
        }
        else
        {
+               //log_debug("Sprite %s is not dynamic, queuing INITIALIZE and 
CONSTRUCT events", getTarget().c_str());
                queueEvent(event_id::INITIALIZE, movie_root::apINIT);
                queueEvent(event_id::CONSTRUCT, movie_root::apCONSTRUCT);
        }




reply via email to

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