gnash-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Gnash-dev] Re:Serious performance problem


From: Sandro Santilli
Subject: Re: [Gnash-dev] Re:Serious performance problem
Date: Wed, 25 Apr 2007 17:41:25 +0200

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;




reply via email to

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