[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