This is an automated email from the ASF dual-hosted git repository.

harbs 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 ac1610b  Added needsView and needsController optimization
ac1610b is described below

commit ac1610b3c90e5565af39825078c59df9528b7c7d
Author: Harbs <[email protected]>
AuthorDate: Sun Jan 2 12:25:44 2022 +0200

    Added needsView and needsController optimization
---
 .../main/royale/org/apache/royale/core/UIBase.as   | 29 +++++++++++++++++++---
 .../org/apache/royale/html/NodeElementBase.as      | 10 ++++++++
 .../org/apache/royale/svg/elements/SVGBase.as      |  9 ++++++-
 3 files changed, 44 insertions(+), 4 deletions(-)

diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/UIBase.as 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/UIBase.as
index 6420b82..6d75c86 100644
--- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/UIBase.as
+++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/UIBase.as
@@ -1391,9 +1391,32 @@ package org.apache.royale.core
          */
         protected function loadBeads():void
         {
-            _view = loadBeadFromValuesManager(IBeadView, "iBeadView", this) as 
IBeadView;
-                       loadBeadFromValuesManager(IBeadController, 
"iBeadController", this);
-            sendEvent(this,"viewChanged");
+            if(needsView())
+            {
+                _view = loadBeadFromValuesManager(IBeadView, "iBeadView", 
this) as IBeadView;
+                sendEvent(this,"viewChanged");
+            }
+            
+            if(needsController())
+                loadBeadFromValuesManager(IBeadController, "iBeadController", 
this);
+            
+        }
+        /**
+         * Subclasses can override this method to declare whether they need a 
view.
+         * Components which do not need a view can avoid searching for view 
beads
+         */
+        protected function needsView():Boolean
+        {
+            return true;
+        }
+
+        /**
+         * Subclasses can override this method to declare whether they need a 
controller.
+         * Components which do not need a controller can avoid searching for 
controller beads
+         */
+        protected function needsController():Boolean
+        {
+            return true;
         }
 
         private var _measurementBead:IMeasurementBead;
diff --git 
a/frameworks/projects/HTML/src/main/royale/org/apache/royale/html/NodeElementBase.as
 
b/frameworks/projects/HTML/src/main/royale/org/apache/royale/html/NodeElementBase.as
index 20e8520..2f98dfb 100644
--- 
a/frameworks/projects/HTML/src/main/royale/org/apache/royale/html/NodeElementBase.as
+++ 
b/frameworks/projects/HTML/src/main/royale/org/apache/royale/html/NodeElementBase.as
@@ -28,6 +28,16 @@ package org.apache.royale.html
                        typeNames = "";
                }
 
+               override protected function needsView():Boolean
+               {
+                       return false;
+               }
+
+               override protected function needsController():Boolean
+               {
+                       return false;
+               }
+
                COMPILE::SWF
                {
                        private var _nodeValue:String;
diff --git 
a/frameworks/projects/HTML/src/main/royale/org/apache/royale/svg/elements/SVGBase.as
 
b/frameworks/projects/HTML/src/main/royale/org/apache/royale/svg/elements/SVGBase.as
index 2a2df6a..5093114 100644
--- 
a/frameworks/projects/HTML/src/main/royale/org/apache/royale/svg/elements/SVGBase.as
+++ 
b/frameworks/projects/HTML/src/main/royale/org/apache/royale/svg/elements/SVGBase.as
@@ -26,7 +26,14 @@ package org.apache.royale.svg.elements
     {
       super();
     }
-
+    override protected function needsView():Boolean
+    {
+      return false;
+    }
+    override protected function needsController():Boolean
+    {
+      return false;
+    }
     override public function get x():Number{
       return Number(element.getAttribute("x"));
     }

Reply via email to