[Laszlo-dev] [Update] For Review: Change 20071209-ptw-k Summary: Fix Sprite memory Leaks

P T Withington ptw at pobox.com
Tue Dec 11 20:18:46 PST 2007


Oh duh.  I guess I may have been too agressive in code removal.   
Obviously LzSprite.js#destroy needs to remove itself from it's  
__parent.__children:

On 2007-12-11, at 17:26 EST, André Bargull wrote:

> Looks ok to me so far,
> but there is still a huge mem-leak in DHTML, just take Phil's  
> testcase and inspect "canvas.sprite.__children"...
>
> On 12/11/2007 2:58 PM, P T Withington wrote:
>> [Update:
>>
>> I believe I have addressed André's comments.  Phil, could you re-QA  
>> please?
>> ]
>>
>> Change 20071209-ptw-k by ptw at dueling-banjos.local on 2007-12-09  
>> 09:32:18 EST
>>    in /Users/ptw/OpenLaszlo/ringding-2
>>    for http://svn.openlaszlo.org/openlaszlo/trunk
>>
>> Summary: Fix Sprite memory Leaks
>>
>> Bugs Fixed:
>> LPP-5217 'windows can leak memory
>>
>> Technical Reviewer: a.bargull at intensis.de (pending)
>> QA Reviewer: philip at pbrdev.com (message://<20071210171315.089691DF284@hemicuda.laszlosystems.com 
>> >)
>> Doc Reviewer: (pending)
>>
>> Details:
>>
>>    LzMakeLoadSprite.*, LzSprite.*: Eliminate recursion argument.  Not
>>    used for sprites.
>>
>>    LzSprite.*:  In #destroy set __LZdeleted flag to prevent events
>>    from resurrecting you.  No need for recursive sprite destruction
>>    now.  Move delegate removal back to destroy from predestroy.
>>
>>    LzIdle: Be careful to create coi Array on instance, not prototype.
>>
>>    LzNode: Comment and simplify $once and $always processing.  Add
>>    comment to explain importance of __LzDeleted flag.
>>
>>    LaszloView: Destroy the sprite _before_ you check for a recursive
>>    call.
>>
>>    LzReplicationManager: Remove superfluous call to LzSprite#destroy.
>>
>>    newcontent, scrollingtext: Remove unused id (that causes a leak).
>>
>> Tests:
>>    I modified Phil's test case to only create/destroy 1 window per
>>    click.  The test methodology is:
>>
>>    1. Start test
>>    2. Click twice to create any shared substrate
>>    3. Debug.markObjects()
>>    4. Click once
>>    5. Debug.findNewObjects()
>>    6. Debug.whyAlive()
>>
>>    Result: Before change, many leaked window sprites.  After  
>> change, no
>>    leaked window sprites.
>>
>>    NOTE: There are still some other minor leaks that I have not
>>    attempted to address here, but will report as a separate bug.
>>
>> Files:
>> M      WEB-INF/lps/lfc/kernel/swf/LzMakeLoadSprite.as
>> M      WEB-INF/lps/lfc/kernel/swf/LzSprite.as
>> M      WEB-INF/lps/lfc/kernel/svg/LzSprite.js
>> M      WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js
>> M      WEB-INF/lps/lfc/kernel/dhtml/LzInputTextSprite.js
>> M      WEB-INF/lps/lfc/kernel/swf9/LzMakeLoadSprite.lzs
>> M      WEB-INF/lps/lfc/kernel/swf9/LzSprite.lzs
>> M      WEB-INF/lps/lfc/services/LzIdle.lzs
>> M      WEB-INF/lps/lfc/core/LzNode.lzs
>> M      WEB-INF/lps/lfc/views/LaszloView.lzs
>> M      WEB-INF/lps/lfc/data/LzReplicationManager.lzs
>> M      lps/components/debugger/newcontent.lzx
>> M      lps/components/debugger/scrollingtext.lzx
>>
>> Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20071209-ptw-k.tar
>




More information about the Laszlo-dev mailing list