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 [EMAIL PROTECTED] 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: [EMAIL PROTECTED] (pending)
QA Reviewer: [EMAIL PROTECTED] (message://<[EMAIL PROTECTED] >)
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



Reply via email to