[Top][All Lists]
[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;