On Wed, Apr 25, 2007 at 02:09:42PM +0200, Udo Giacomozzi wrote:

> zl> I think one reason for this is all event handlers should be triggered
> zl> for single-frame sprites.
> 
> You mean event handlers like onEnterFrame, onMouseDown, ...?

onEnterFrame and LoadVars requests and drag  for sure.

> zl> This is checked by line " if (m_current_frame != (size_t)prev_frame)"
> 
> Yes, but applies only to execute_frame_tags() which is not the problem
> in this case. The call to do_actions() is still done.

do_actions executes queued actions removing them from the queue.
execute_frame_tags() is what queues the actions, so do_actions does nothing if 
execute_frame_tags()
is not called.

> zl> Yes, it's called even for stopped movies, that's confusing.  But the
> zl> action list won't be filled again for stopped movies, so even if
> zl> do_actions() being called again, it will do nothing actually.
> 
> That's not true actually. I backtraced the call to set_invalidated()
> using gdb and it's called implicitely by do_actions(). In between this
> part of the backtrace there are calls to execute_actions() and
> execute_action(), ie. they're called by do_actions().
> 
> ... -> do_actions() -> execute_actions() -> execute_action() -> ... -> 
> set_invalidated()

Could it be a memory corruption due to the character::get_text_value returning
the adress of a local variable ?

> A few days ago I noticed that static characters get removed and placed
> again on a display list when a sprite loops back to it's first frame.
> 

This should be only true for multi-framed sprites.
Anyway, if a *child* is removed and placed again of course it's first frame 
actions are executed again.

--strk;


_______________________________________________
Gnash-dev mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/gnash-dev

Reply via email to