gnash-commit
[Top][All Lists]
Advanced

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

Re[2]: [Gnash-commit] gnash/server sprite_instance.cpp


From: Udo Giacomozzi
Subject: Re[2]: [Gnash-commit] gnash/server sprite_instance.cpp
Date: Tue, 13 Feb 2007 20:49:09 +0100

Hello strk,

Tuesday, February 13, 2007, 6:38:22 PM, you wrote:
s> Some time ago I added a 'set_invalidated' call in 'execute_frame_tags',
s> for specifically handling DisplayList reset.

I tracked the problem down to somewhere near execute_frame_tags().

At startup I get two place_character() calls:

void gnash::DisplayList::place_character(gnash::character*, short unsigned int, 
const gnash::cxform&, const gnash::matrix&, float, short unsigned int) enter
void gnash::DisplayList::place_character(gnash::character*, short unsigned int, 
const gnash::cxform&, const gnash::matrix&, float, short unsigned int) enter

The first is probably for the MC (that's moving around) and the second
for the shape inside the MC.

With each remaining frame the MC is moved around:

void gnash::DisplayList::move_display_object(short unsigned int, bool, const 
gnash::cxform&, bool, const gnash::matrix&, float, short unsigned int) enter

When the movie restarts ( frame == 0 && has_looped() ) then
clear_exept() is called which does not clear anything, which is
correct as the DisplayList is not modified during the movie.

void gnash::DisplayList::clear_except(std::vector<gnash::character*, 
std::allocator<gnash::character*> >&) enter

However I miss an additional move_display_object() call to bring the
MC back to it's initial position.

I tried to comment out the following line but it did not help at all:

        // Execute this frame's init actions, if necessary.
        if (m_init_actions_executed[frame] == false)

I have no clue what's necessary to restore the initial position of a
MC. Could you have a look at it?

Udo





reply via email to

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