gnash-commit
[Top][All Lists]
Advanced

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

Re: [Gnash-commit] gnash ChangeLog server/button_character_instanc...


From: Udo Giacomozzi
Subject: Re: [Gnash-commit] gnash ChangeLog server/button_character_instanc...
Date: Mon, 14 Apr 2008 01:04:22 +0200

Hello Sandro,

Friday, April 11, 2008, 8:30:47 PM, you wrote:
SS>         // see if the two lists differ and restart characters if needed
SS> +       // TODO: FIXME: this is not how you check for equality :/
SS>         if (new_list.size() != old_list.size())
SS>                 set_invalidated();              // something changed 


Agree, this doesn't look right.
SS> +  // NOTE: we do have that method now, it's called 
get_active_characters(state)

Then it would be better to rewrite that piece of code, wouldn't it?


SS> /*bounds->expand_to_transformed_rect(get_world_matrix(),
SS>            m_record_character[i]->get_bound());*/
SS>          m_record_character[i]->add_invalidated_bounds(ranges, 
SS> -          force||m_invalidated);        
SS> +          force||m_invalidated||m_child_invalidated);        

This may be fixing bug #22904, but isn't correct. That "force"
parameter has the effect that the m_invalidated flags of that child
get ignored and are *always* added. This *seems* to fix the bug because
it adds to the inv. bounds too often - even if unnecessary.

m_child_invalidated is just a hint for DisplayList to know if it
makes sense to call add_invalidated_bounds() for one of it's childs.
For example, the root movie knows if at least one little deeply
nested sprite has been invalidated because of this flag. This is to
avoid checking each single instance for each frame.

The "force" flag is necessary because once a sprite has been
invalidated, all of it's childs are indirectly invalidated too.

So this is a false patch and you better revert your commit.

I guess that "something changed" code above (where you added the TODO)
is the real culprit and correcting that expression will probably
really fix the bug.

Please try that for me, I can't check it myself until 2-3 days.


Udo





reply via email to

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