[Top][All Lists]

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

Re: [Gnash-dev] Re: gotoAndPlay bug in Gnash (was: Serious performance p

From: Sandro Santilli
Subject: Re: [Gnash-dev] Re: gotoAndPlay bug in Gnash (was: Serious performance problem)
Date: Tue, 8 May 2007 08:38:57 +0200

On Tue, May 08, 2007 at 11:43:39AM +0800, zou lunkai wrote:

> In sprite_instance::goto_frame()
> resetDisplayList() clears all static characters placed from frame1 to
> current frame when jump back. Instead of doing that, I think we should
> just clear static characters placed from target frame to current
> frame. This might solve some problems above.

The main problem with our "reverse-execution" mechanism was associating
an instance with its PlaceObject2 tag. The implementation we found
in gameswf was scanning the playlist matching the instance id/depth
with the ones specified in PlaceObject2 and RemoveObject tags.
This was inappropriate because depth of an instance can be changed
by either subsequent PlaceObject2 tags (with move flag set)
or by ActionScript.

If we store a TimelineInfo object to "static" objects we might
solve this problem. The TimelineInfo might be a pointer to the
PlaceObject2 tag (now in its own header extracted with this 
in mind) and the frame number in which it was executed.

Things to check before proceeding (by adding more testcases)

- What happens when instance in frame 2 changes it's matrix
  or depth due to a PlaceObject2 tag in frame 3 when looping back
  from frame 6 to frame 4 ? What if we loop back to 2 or to 3 ?

- Are dynamic instances moved to the "static range depth" by ActionScript also
  removed by loopback ? (see misc-ming.all/displaylist_depths_test.c)

- Are static instances moved to the "dynamic range depth" still removed by
  loop-back ? (again, see displaylist_depths_test.c)

- Are load/unload events of instances placed and removed before the target 
frame of
  a loop-back invoked again ?


reply via email to

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