Fixed a redundant check that caused a massive slowdown on UWP. (#788)
authorBradChase2011 <brchase07@yahoo.com>
Thu, 9 Mar 2017 18:39:27 +0000 (13:39 -0500)
committerRui Marinho <me@ruimarinho.net>
Thu, 9 Mar 2017 18:39:27 +0000 (18:39 +0000)
* Fixed a redundant check that caused a massive slowdown on UWP.

* Fixed formatting.

* Fixed formatting.

* UWP_UI_Speed_Fix Last time on tabbing, lets hope so!

Xamarin.Forms.Core/VisualElement.cs
Xamarin.Forms.Platform.WP8/VisualElementTracker.cs
Xamarin.Forms.Platform.WinRT/VisualElementTracker.cs

index 476a057..905771c 100644 (file)
@@ -337,12 +337,11 @@ namespace Xamarin.Forms
                                        return true;
 
                                Element parent = RealParent;
-                               while (parent != null)
+                               if (parent != null)
                                {
                                        var visualElement = parent as VisualElement;
                                        if (visualElement != null && visualElement.IsInNativeLayout)
                                                return true;
-                                       parent = parent.RealParent;
                                }
 
                                return false;
index b206af5..509ffd4 100644 (file)
@@ -275,6 +275,7 @@ namespace Xamarin.Forms.Platform.WinPhone
                {
                        if (Model.IsInNativeLayout)
                                return;
+
                        var parent = (FrameworkElement)Element.Parent;
                        parent?.InvalidateMeasure();
                        Element.InvalidateMeasure();
index e8684ff..a29d61a 100644 (file)
@@ -275,6 +275,7 @@ namespace Xamarin.Forms.Platform.WinRT
                {
                        if (Element.IsInNativeLayout)
                                return;
+
                        var parent = (FrameworkElement)Container.Parent;
                        parent?.InvalidateMeasure();
                        Container.InvalidateMeasure();