You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ma...@apache.org on 2013/11/05 12:24:22 UTC
git commit: [flex-sdk] [refs/heads/develop] - FIX FLEX-33878 avoid
unnecessary matrix allocations
Updated Branches:
refs/heads/develop 1277b0970 -> 0b6fa00f2
FIX FLEX-33878 avoid unnecessary matrix allocations
Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/0b6fa00f
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/0b6fa00f
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/0b6fa00f
Branch: refs/heads/develop
Commit: 0b6fa00f277024616fbfd638ee2ebc656a8363f5
Parents: 1277b09
Author: mamsellem <ma...@systar.com>
Authored: Tue Nov 5 12:23:04 2013 +0100
Committer: mamsellem <ma...@systar.com>
Committed: Tue Nov 5 12:23:04 2013 +0100
----------------------------------------------------------------------
.../projects/framework/src/mx/core/UIComponent.as | 8 +++++---
.../projects/framework/src/mx/utils/MatrixUtil.as | 13 +++++++++----
2 files changed, 14 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/0b6fa00f/frameworks/projects/framework/src/mx/core/UIComponent.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/framework/src/mx/core/UIComponent.as b/frameworks/projects/framework/src/mx/core/UIComponent.as
index d181000..cec9a4b 100644
--- a/frameworks/projects/framework/src/mx/core/UIComponent.as
+++ b/frameworks/projects/framework/src/mx/core/UIComponent.as
@@ -6093,7 +6093,8 @@ public class UIComponent extends FlexSprite
{
if (_layoutFeatures == null)
{
- _hasComplexLayoutMatrix = super.transform.matrix && !MatrixUtil.isDeltaIdentity(super.transform.matrix);
+ var tmpMatrix:Matrix = super.transform.matrix;
+ _hasComplexLayoutMatrix = tmpMatrix && !MatrixUtil.isDeltaIdentity(tmpMatrix);
return _hasComplexLayoutMatrix;
}
else
@@ -14470,7 +14471,8 @@ public class UIComponent extends FlexSprite
*/
public function getLayoutMatrix():Matrix
{
- if (_layoutFeatures != null || super.transform.matrix == null)
+ var superMatrix:Matrix = super.transform.matrix;
+ if (_layoutFeatures != null || superMatrix == null)
{
// TODO: this is a workaround for a situation in which the
// object is in 2D, but used to be in 3D and the player has not
@@ -14494,7 +14496,7 @@ public class UIComponent extends FlexSprite
else
{
// flash also returns copies.
- return super.transform.matrix;
+ return superMatrix;
}
}
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/0b6fa00f/frameworks/projects/framework/src/mx/utils/MatrixUtil.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/framework/src/mx/utils/MatrixUtil.as b/frameworks/projects/framework/src/mx/utils/MatrixUtil.as
index b7ba3ff..264986e 100644
--- a/frameworks/projects/framework/src/mx/utils/MatrixUtil.as
+++ b/frameworks/projects/framework/src/mx/utils/MatrixUtil.as
@@ -29,7 +29,6 @@ import flash.geom.Rectangle;
import flash.geom.Utils3D;
import flash.geom.Vector3D;
import flash.system.ApplicationDomain;
-import flash.utils.getDefinitionByName;
import mx.core.mx_internal;
@@ -1694,8 +1693,11 @@ public final class MatrixUtil
if ($transformProperty == null)
$transformProperty = new QName(mx_internal, "$transform");
-
- while (displayObject && displayObject.transform.matrix && displayObject != topParent)
+
+
+ var displayObjectMatrix:Matrix = displayObject ? displayObject.transform.matrix : null ;
+ var notTopAndHasMatrix:Boolean = displayObjectMatrix!=null && displayObject != topParent;
+ while (notTopAndHasMatrix)
{
var scrollRect:Rectangle = displayObject.scrollRect;
if (scrollRect != null)
@@ -1730,13 +1732,16 @@ public final class MatrixUtil
else if (isUIMovieClip)
m.concat(displayObject[$transformProperty].matrix);
else
- m.concat(displayObject.transform.matrix);
+ m.concat(displayObjectMatrix);
// Try to access $parent, which is the true display list parent
if (isUIComponent)
displayObject = displayObject[fakeDollarParent] as DisplayObject;
else
displayObject = displayObject.parent as DisplayObject;
+
+ displayObjectMatrix = displayObject ? displayObject.transform.matrix : null;
+ notTopAndHasMatrix = displayObjectMatrix!=null && displayObject != topParent;
}
return m;
}