You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ca...@apache.org on 2020/03/11 21:44:02 UTC
[royale-asjs] branch develop updated: Basic-Dynamic-IR-classes: All
this base classes need to remove listeners to avoid dp hang and cause
memory leak. Plus clean and organize imports
This is an automated email from the ASF dual-hosted git repository.
carlosrovira pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
The following commit(s) were added to refs/heads/develop by this push:
new 38c54eb Basic-Dynamic-IR-classes: All this base classes need to remove listeners to avoid dp hang and cause memory leak. Plus clean and organize imports
38c54eb is described below
commit 38c54eb31050315594f7e1826478247ecf1bba57
Author: Carlos Rovira <ca...@apache.org>
AuthorDate: Wed Mar 11 22:43:53 2020 +0100
Basic-Dynamic-IR-classes: All this base classes need to remove listeners to avoid dp hang and cause memory leak. Plus clean and organize imports
---
.../DynamicAddItemRendererForArrayListData.as | 9 ++++++---
.../DynamicItemsRendererFactoryForArrayListData.as | 22 ++++++----------------
...cRemoveAllByNullItemRendererForArrayListData.as | 5 ++---
...DynamicRemoveAllItemRendererForArrayListData.as | 17 +++++++++++------
.../DynamicRemoveItemRendererForArrayListData.as | 13 ++++++-------
.../DynamicUpdateItemRendererForArrayListData.as | 7 ++++++-
6 files changed, 37 insertions(+), 36 deletions(-)
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicAddItemRendererForArrayListData.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicAddItemRendererForArrayListData.as
index 8ea2247..0bdc70b 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicAddItemRendererForArrayListData.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicAddItemRendererForArrayListData.as
@@ -29,8 +29,8 @@ package org.apache.royale.html.beads
import org.apache.royale.utils.sendStrandEvent;
/**
- * Handles the adding of an itemRenderer once the corresponding datum has been added
- * from the IDataProviderModel.
+ * Handles the adding of an itemRenderer once the corresponding datum has been added
+ * from the IDataProviderModel.
*
* @langversion 3.0
* @playerversion Flash 10.2
@@ -52,13 +52,16 @@ package org.apache.royale.html.beads
}
private var dp:IArrayList;
-
/**
* @private
* @royaleemitcoercion org.apache.royale.events.IEventDispatcher
*/
override protected function dataProviderChangeHandler(event:Event):void
{
+ if(dp)
+ {
+ dp.removeEventListener(CollectionEvent.ITEM_ADDED, handleItemAdded);
+ }
dp = dataProviderModel.dataProvider as IArrayList;
if (!dp)
return;
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicItemsRendererFactoryForArrayListData.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicItemsRendererFactoryForArrayListData.as
index 99a8c9a..bab5d61 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicItemsRendererFactoryForArrayListData.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicItemsRendererFactoryForArrayListData.as
@@ -19,27 +19,14 @@
package org.apache.royale.html.beads
{
import org.apache.royale.collections.IArrayList;
- import org.apache.royale.core.IBead;
- import org.apache.royale.core.IDataProviderItemRendererMapper;
- import org.apache.royale.core.IDataProviderModel;
- import org.apache.royale.core.IItemRendererClassFactory;
- import org.apache.royale.core.IItemRendererOwnerView;
- import org.apache.royale.core.IIndexedItemRendererInitializer;
- import org.apache.royale.core.IListPresentationModel;
import org.apache.royale.core.IIndexedItemRenderer;
- import org.apache.royale.core.ISelectionModel;
- import org.apache.royale.core.IStrand;
+ import org.apache.royale.core.IIndexedItemRendererInitializer;
+ import org.apache.royale.core.IItemRendererOwnerView;
import org.apache.royale.core.IStrandWithModelView;
- import org.apache.royale.core.SimpleCSSStyles;
- import org.apache.royale.core.UIBase;
- import org.apache.royale.core.ValuesManager;
import org.apache.royale.events.CollectionEvent;
import org.apache.royale.events.Event;
- import org.apache.royale.events.EventDispatcher;
import org.apache.royale.events.IEventDispatcher;
import org.apache.royale.html.beads.IListView;
- import org.apache.royale.utils.loadBeadFromValuesManager;
- import org.apache.royale.core.DispatcherBead;
import org.apache.royale.utils.sendStrandEvent;
/**
@@ -60,7 +47,6 @@ package org.apache.royale.html.beads
}
private var dp:IArrayList;
-
/**
* @private
* @royaleignorecoercion org.apache.royale.core.IListPresentationModel
@@ -68,6 +54,10 @@ package org.apache.royale.html.beads
*/
override protected function dataProviderChangeHandler(event:Event):void
{
+ if(dp)
+ {
+ dp.removeEventListener(CollectionEvent.ITEM_ADDED, itemAddedHandler);
+ }
dp = dataProviderModel.dataProvider as IArrayList;
if (!dp)
return;
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveAllByNullItemRendererForArrayListData.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveAllByNullItemRendererForArrayListData.as
index 4dd9227..ff24bab 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveAllByNullItemRendererForArrayListData.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveAllByNullItemRendererForArrayListData.as
@@ -23,11 +23,10 @@ package org.apache.royale.html.beads
import org.apache.royale.core.IItemRendererOwnerView;
import org.apache.royale.core.ISelectionModel;
import org.apache.royale.core.IStrand;
- import org.apache.royale.core.IStrandWithModelView;
- import org.apache.royale.events.CollectionEvent;
+ import org.apache.royale.core.IStrandWithModelView;
import org.apache.royale.events.Event;
import org.apache.royale.events.IEventDispatcher;
- import org.apache.royale.html.beads.IListView;
+ import org.apache.royale.html.beads.IListView;
/**
* Handles the removal of all itemRenderers once data source is being set to null.
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveAllItemRendererForArrayListData.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveAllItemRendererForArrayListData.as
index 0a4563f..b4eb23b 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveAllItemRendererForArrayListData.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveAllItemRendererForArrayListData.as
@@ -23,15 +23,15 @@ package org.apache.royale.html.beads
import org.apache.royale.core.IItemRendererOwnerView;
import org.apache.royale.core.ISelectionModel;
import org.apache.royale.core.IStrand;
- import org.apache.royale.core.IStrandWithModelView;
+ import org.apache.royale.core.IStrandWithModelView;
import org.apache.royale.events.CollectionEvent;
import org.apache.royale.events.Event;
import org.apache.royale.events.IEventDispatcher;
- import org.apache.royale.html.beads.IListView;
+ import org.apache.royale.html.beads.IListView;
/**
- * Handles the removal of all itemRenderers once the all items has been removed
- * from the IDataProviderModel.
+ * Handles the removal of all itemRenderers once the all items has been removed
+ * from the IDataProviderModel.
*
* @langversion 3.0
* @playerversion Flash 10.2
@@ -89,13 +89,18 @@ package org.apache.royale.html.beads
dataProviderChangeHandler(null);
}
+ private var dp:IEventDispatcher;
/**
* @private
* @royaleemitcoercion org.apache.royale.events.IEventDispatcher
*/
protected function dataProviderChangeHandler(event:Event):void
{
- var dp:IEventDispatcher = dataProviderModel.dataProvider as IEventDispatcher;
+ if(dp)
+ {
+ dp.removeEventListener(CollectionEvent.ALL_ITEMS_REMOVED, handleAllItemsRemoved);
+ }
+ dp = dataProviderModel.dataProvider as IEventDispatcher;
if (!dp)
return;
@@ -104,7 +109,7 @@ package org.apache.royale.html.beads
}
/**
- * Handles the itemRemoved event by removing the item.
+ * Handles the allItemsRemoved event by removing the item.
*
* @langversion 3.0
* @playerversion Flash 10.2
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveItemRendererForArrayListData.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveItemRendererForArrayListData.as
index 0ead9d1..3a87b31 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveItemRendererForArrayListData.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicRemoveItemRendererForArrayListData.as
@@ -18,13 +18,8 @@
////////////////////////////////////////////////////////////////////////////////
package org.apache.royale.html.beads
{
- import org.apache.royale.core.IBead;
- import org.apache.royale.core.IDataProviderModel;
import org.apache.royale.core.IIndexedItemRenderer;
import org.apache.royale.core.IItemRendererOwnerView;
- import org.apache.royale.core.IParent;
- import org.apache.royale.core.ISelectionModel;
- import org.apache.royale.core.IStrand;
import org.apache.royale.core.IStrandWithModelView;
import org.apache.royale.events.CollectionEvent;
import org.apache.royale.events.Event;
@@ -54,14 +49,18 @@ package org.apache.royale.html.beads
{
}
-
+ private var dp:IEventDispatcher;
/**
* @private
* @royaleemitcoercion org.apache.royale.events.IEventDispatcher
*/
override protected function dataProviderChangeHandler(event:Event):void
{
- var dp:IEventDispatcher = dataProviderModel.dataProvider as IEventDispatcher;
+ if(dp)
+ {
+ dp.removeEventListener(CollectionEvent.ITEM_REMOVED, handleItemRemoved);
+ }
+ dp = dataProviderModel.dataProvider as IEventDispatcher;
if (!dp)
return;
diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicUpdateItemRendererForArrayListData.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicUpdateItemRendererForArrayListData.as
index 220155e..3cdc7aa 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicUpdateItemRendererForArrayListData.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DynamicUpdateItemRendererForArrayListData.as
@@ -51,12 +51,17 @@ package org.apache.royale.html.beads
{
}
+ private var dp:IEventDispatcher;
/**
* @royaleignorecoercion org.apache.royale.events.IEventDispatcher
*/
override protected function dataProviderChangeHandler(event:Event):void
{
- var dp:IEventDispatcher = dataProviderModel.dataProvider as IEventDispatcher;
+ if(dp)
+ {
+ dp.removeEventListener(CollectionEvent.ITEM_UPDATED, handleItemUpdated);
+ }
+ dp = dataProviderModel.dataProvider as IEventDispatcher;
if (!dp)
return;