[Laszlo-checkins] r8054 - openlaszlo/trunk/WEB-INF/lps/lfc/kernel/dhtml

max@openlaszlo.org max at openlaszlo.org
Sat Feb 16 15:11:08 PST 2008


Author: max
Date: 2008-02-16 15:11:03 -0800 (Sat, 16 Feb 2008)
New Revision: 8054

Modified:
   openlaszlo/trunk/WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js
   openlaszlo/trunk/WEB-INF/lps/lfc/kernel/dhtml/LzTextSprite.js
Log:
Change 20080215-maxcarlson-I by maxcarlson at Roboto on 2008-02-15 17:43:23 PST
    in /Users/maxcarlson/openlaszlo/trunk
    for http://svn.openlaszlo.org/openlaszlo/trunk

Summary: Fix IE memory leaks

New Features:

Bugs Fixed: LPP-5429 - IE-leak prevention leaks memory, LPP-5431 - Memory Leak using new and destory with <class> instances, LPP-5176 - When using IE 7: Repeated calls to <text>'s setText() will eventually throw javascript errors

Technical Reviewer: promanik
QA Reviewer: a.bargull at intensis.de
Doc Reviewer: (pending)

Documentation:

Release Notes:

Details: LzSprite.js - Delete entries from __sprites cache on destroy().

LzTextSprite.js - Clean up _sizedomcache when the rest of the text size cache is cleared.
    

Tests: Tested case from LPP-5431 and LPP-5176.tar under IE 6 windows.  No errors after 1000 instances, or after a page load and memory usage appears flat for both!



Modified: openlaszlo/trunk/WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js	2008-02-16 15:20:13 UTC (rev 8053)
+++ openlaszlo/trunk/WEB-INF/lps/lfc/kernel/dhtml/LzSprite.js	2008-02-16 23:11:03 UTC (rev 8054)
@@ -1255,6 +1255,10 @@
         this.__discardElement(this.__LZcanvas);
     }
     this.__ImgPool = null;
+
+    if (this.quirks.ie_leak_prevention) {
+        delete this.__sprites[this.uid];
+    }
 }
 
 /**

Modified: openlaszlo/trunk/WEB-INF/lps/lfc/kernel/dhtml/LzTextSprite.js
===================================================================
--- openlaszlo/trunk/WEB-INF/lps/lfc/kernel/dhtml/LzTextSprite.js	2008-02-16 15:20:13 UTC (rev 8053)
+++ openlaszlo/trunk/WEB-INF/lps/lfc/kernel/dhtml/LzTextSprite.js	2008-02-16 23:11:03 UTC (rev 8054)
@@ -268,10 +268,16 @@
 
     var root = document.getElementById('lzTextSizeCache');
 
-    // Empty the cache when full, but do not reset the counter because
-    // IE holds onto the object.
     if (LzTextSprite.prototype._sizecache.counter > 0 && LzTextSprite.prototype._sizecache.counter % LzTextSprite.prototype.__sizecacheupperbound == 0) {
-        LzTextSprite.prototype._sizecache = {counter: LzTextSprite.prototype._sizecache.counter};
+        LzTextSprite.prototype._sizecache = {counter: 0};
+        if (LzSprite.prototype.quirks.ie_leak_prevention) {
+            var obj = LzTextSprite.prototype._sizedomcache;
+            var f = LzSprite.prototype.__discardElement;
+            for( var i in obj ) {
+                f( obj[i] );
+            }
+            LzTextSprite.prototype._sizedomcache = {}
+        }
         if (root) {
             root.innerHTML = '';
         }



More information about the Laszlo-checkins mailing list