[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Gnash-commit] gnash ChangeLog testsuite/actionscript.all/Movi...
From: |
zou lunkai |
Subject: |
Re: [Gnash-commit] gnash ChangeLog testsuite/actionscript.all/Movi... |
Date: |
Thu, 4 Oct 2007 19:43:40 +0800 |
> > IMPORTANT NOTE:
> > We need a test for opcode guarding to check if Unloaded and Removed
> > makes a difference there. If the removed character has an onUnload event
> > handler, is the remaining of actions after it's removal from stage still
> > discarded ?
> >
Found related tests in misc-ming.all/opcode_guard_test.c.
"
// should not be executed.
add_clip_actions(mc1, "_root.xcheck(false);");
"
This testcase defines onClipConstruct, onClipLoad, onClipUnload and
onClipEnterFrame event handlers for a static movieclip mc1. mc1 gets
unloaded in its construct handler(by the effect of gotoFrame).
Tests show that:
(1)frame0 actions of mc1 *shouldn't* be executed.
(2)onClipConstruct, onClipLoad, onClipUnload handlers should be executed.
Gnash fails, but I guess it is related to actions order.
--zou
On 10/4/07, zou lunkai <address@hidden> wrote:
> > IMPORTANT NOTE:
> > We need a test for opcode guarding to check if Unloaded and Removed
> > makes a difference there. If the removed character has an onUnload event
> > handler, is the remaining of actions after it's removal from stage still
> > discarded ?
> >
> I think the answer is yes. It was tested in
> "testsuite/misc-swfc.all/movieclip_destruction_test1.sc"
>
> There are related comments and code block(in movieclip_destruction_test1.sc):
>
> // No matter onUnload defined or not, the above actions still got skipped.
> //#define DEFINE_ONUNLOAD
> #ifdef DEFINE_ONUNLOAD
> .action:
> // Define onUnload(for deduction)
> mc1.onUnload = function () {};
> .end
> #endif
>
> It was a quick test but disabled for some reason(maybe for testing
> some other cases). I can add some focused tests when I am back.
>
> --zou
>
>
>
>
>
> On 10/4/07, Sandro Santilli <address@hidden> wrote:
> > On Thu, Oct 04, 2007 at 06:48:45PM +0800, zou lunkai wrote:
> > > > +sr60.removeMovieClip();
> > >
> > > > +check_equals(sr60.getDepth(), -32829); ---->[1]
> > >
> > > > +sr59.removeMovieClip();
> > >
> > > > +xcheck_equals(sr59.getDepth(), -32828); ---->[2]
> > >
> > > If Gnash passes on [1], why should it fail on [2]?
> >
> > Because for gnash sr60 and sr59 both point to the same instance.
> > They both have the same target, the one at lower depth is found
> > first.
> >
> > > we are still using pointers for soft references, right? what's the
> > > result of sr59.getDepth() with Gnash(just interested, I cann't verify
> > > it myself at the moment)?
> >
> > It's -32829.. same as sr60.
> > Gnash goes looking for a rebind when the sprite isUnloaded().
> > Now changing it to check for isDestroyed() instead, which should
> > fix this.
> >
> > IMPORTANT NOTE:
> > We need a test for opcode guarding to check if Unloaded and Removed
> > makes a difference there. If the removed character has an onUnload event
> > handler, is the remaining of actions after it's removal from stage still
> > discarded ?
> >
> > --strk;
> >
>
[Gnash-commit] gnash ChangeLog testsuite/actionscript.all/Movi..., Sandro Santilli, 2007/10/25