
| Key: |
LPP-5337
|
| Type: |
Bug
|
| Status: |
Closed
|
| Resolution: |
Fixed
|
| Priority: |
P0
|
| Assignee: |
Unassigned
|
| Reporter: |
Maynard Demmon
|
| Votes: |
0
|
| Watchers: |
0
|
|
If you were logged in you would be able to see more operations.
|
|
|
| Severity: |
Major
|
| Fixed in Change#: |
7,786
|
| Runtime: |
N/A
|
| Fix in hand: |
False
|
|
When a view has a multiframe resource assigned to it via $style it within a view that is init stage late a delegate for updatePlayStatus gets left in LzIdle.onidle.
The following test case demonstrates the problem.
<canvas>
<resource name="SPINNER_RSRC" src="./spinner.swf" />
<stylesheet>
view [name="bar0"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="bar1"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="bar2"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="bar3"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="bar4"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="bar5"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="bar6"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="bar7"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="bar8"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="bar9"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="baz0"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="baz1"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="baz2"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="baz3"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="baz4"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="baz5"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="baz6"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="baz7"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="baz8"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="baz9"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="qux0"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="qux1"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="qux2"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="qux3"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="qux4"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="qux5"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="qux6"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="qux7"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="qux8"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="qux9"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="quux0"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="quux1"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="quux2"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="quux3"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="quux4"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="quux5"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="quux6"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="quux7"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="quux8"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="quux9"] {bigspinnerresource: "SPINNER_RSRC";}
</stylesheet>
<simplelayout axis="x"/>
<!-- This section is a work around using runtime resource assignment. -->
<view initstage="late">
<simplelayout axis="y"/>
<view name="foo0"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="foo1"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="foo2"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="foo3"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="foo4"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="foo5"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="foo6"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="foo7"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="foo8"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="foo9"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
</view>
<!-- This shows the problem not happening because the parent view is not initstage late. -->
<view>
<simplelayout axis="y"/>
<view name="qux0" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="qux1" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="qux2" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="qux3" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="qux4" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="qux5" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="qux6" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="qux7" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="qux8" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="qux9" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
</view>
<!-- This shows the problem not happening because the parent view is not initstage late. Using ${false} to work around a problem with the play attr. -->
<view>
<simplelayout axis="y"/>
<view name="quux0" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="quux1" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="quux2" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="quux3" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="quux4" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="quux5" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="quux6" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="quux7" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="quux8" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="quux9" play="${false}" resource="$style{'bigspinnerresource'}"/>
</view>
<!-- This section shows the work around again without initstage late just to make sure it works. -->
<view>
<simplelayout axis="y"/>
<view name="corge0"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="corge1"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="corge2"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="corge3"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="corge4"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="corge5"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="corge6"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="corge7"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="corge8"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="corge9"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
</view>
<!-- This shows the problem happening because the parent view is initstage late. -->
<view initstage="late">
<simplelayout axis="y"/>
<view name="bar0" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="bar1" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="bar2" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="bar3" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="bar4" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="bar5" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="bar6" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="bar7" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="bar8" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="bar9" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
</view>
<!-- This shows the problem happening because the parent view is initstage late. also uses the play attr work around. -->
<view initstage="late">
<simplelayout axis="y"/>
<view name="baz0" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="baz1" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="baz2" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="baz3" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="baz4" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="baz5" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="baz6" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="baz7" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="baz8" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="baz9" play="${false}" resource="$style{'bigspinnerresource'}"/>
</view>
</canvas>
|
|
Description
|
When a view has a multiframe resource assigned to it via $style it within a view that is init stage late a delegate for updatePlayStatus gets left in LzIdle.onidle.
The following test case demonstrates the problem.
<canvas>
<resource name="SPINNER_RSRC" src="./spinner.swf" />
<stylesheet>
view [name="bar0"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="bar1"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="bar2"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="bar3"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="bar4"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="bar5"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="bar6"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="bar7"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="bar8"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="bar9"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="baz0"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="baz1"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="baz2"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="baz3"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="baz4"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="baz5"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="baz6"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="baz7"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="baz8"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="baz9"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="qux0"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="qux1"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="qux2"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="qux3"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="qux4"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="qux5"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="qux6"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="qux7"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="qux8"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="qux9"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="quux0"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="quux1"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="quux2"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="quux3"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="quux4"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="quux5"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="quux6"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="quux7"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="quux8"] {bigspinnerresource: "SPINNER_RSRC";}
view [name="quux9"] {bigspinnerresource: "SPINNER_RSRC";}
</stylesheet>
<simplelayout axis="x"/>
<!-- This section is a work around using runtime resource assignment. -->
<view initstage="late">
<simplelayout axis="y"/>
<view name="foo0"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="foo1"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="foo2"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="foo3"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="foo4"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="foo5"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="foo6"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="foo7"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="foo8"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="foo9"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
</view>
<!-- This shows the problem not happening because the parent view is not initstage late. -->
<view>
<simplelayout axis="y"/>
<view name="qux0" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="qux1" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="qux2" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="qux3" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="qux4" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="qux5" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="qux6" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="qux7" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="qux8" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="qux9" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
</view>
<!-- This shows the problem not happening because the parent view is not initstage late. Using ${false} to work around a problem with the play attr. -->
<view>
<simplelayout axis="y"/>
<view name="quux0" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="quux1" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="quux2" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="quux3" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="quux4" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="quux5" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="quux6" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="quux7" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="quux8" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="quux9" play="${false}" resource="$style{'bigspinnerresource'}"/>
</view>
<!-- This section shows the work around again without initstage late just to make sure it works. -->
<view>
<simplelayout axis="y"/>
<view name="corge0"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="corge1"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="corge2"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="corge3"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="corge4"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="corge5"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="corge6"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="corge7"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="corge8"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
<view name="corge9"><method event="oninit">this.setResource("SPINNER_RSRC"); this.stop();</method></view>
</view>
<!-- This shows the problem happening because the parent view is initstage late. -->
<view initstage="late">
<simplelayout axis="y"/>
<view name="bar0" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="bar1" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="bar2" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="bar3" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="bar4" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="bar5" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="bar6" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="bar7" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="bar8" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
<view name="bar9" resource="$style{'bigspinnerresource'}"><method event="oninit">this.stop();</method></view>
</view>
<!-- This shows the problem happening because the parent view is initstage late. also uses the play attr work around. -->
<view initstage="late">
<simplelayout axis="y"/>
<view name="baz0" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="baz1" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="baz2" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="baz3" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="baz4" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="baz5" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="baz6" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="baz7" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="baz8" play="${false}" resource="$style{'bigspinnerresource'}"/>
<view name="baz9" play="${false}" resource="$style{'bigspinnerresource'}"/>
</view>
</canvas> |
Show » |
|