From 31aa77cecae4bc2fdb0066f41d994f2493513a8d Mon Sep 17 00:00:00 2001 From: "xingwei.zhu" Date: Thu, 4 Jul 2019 12:36:17 +0800 Subject: [PATCH] avoid mark viewMetrics dirty in update, which will potentially leads to frequent native-calls --- Runtime/editor/editor_utils.cs | 4 ++++ Runtime/engine/DisplayMetrics.cs | 6 +++++- Runtime/engine/UIWidgetsPanel.cs | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/Runtime/editor/editor_utils.cs b/Runtime/editor/editor_utils.cs index 9ea0526e..f090f526 100644 --- a/Runtime/editor/editor_utils.cs +++ b/Runtime/editor/editor_utils.cs @@ -31,6 +31,10 @@ public void Update() { public void OnEnable() { this._lastDevicePixelRatio = GameViewUtil.getGameViewDevicePixelRatio(); } + + public void onViewMetricsChanged() { + + } public float devicePixelRatio { get { return this._lastDevicePixelRatio; } diff --git a/Runtime/engine/DisplayMetrics.cs b/Runtime/engine/DisplayMetrics.cs index dc845237..23214a5c 100644 --- a/Runtime/engine/DisplayMetrics.cs +++ b/Runtime/engine/DisplayMetrics.cs @@ -25,6 +25,7 @@ public interface DisplayMetrics { void OnEnable(); void OnGUI(); void Update(); + void onViewMetricsChanged(); float devicePixelRatio { get; } @@ -46,11 +47,14 @@ public void OnGUI() { } public void Update() { + + } + + public void onViewMetricsChanged() { //view metrics marks dirty this._viewMetrics = null; } - public float devicePixelRatio { get { if (this._devicePixelRatio > 0) { diff --git a/Runtime/engine/UIWidgetsPanel.cs b/Runtime/engine/UIWidgetsPanel.cs index 3373877f..54e8233c 100644 --- a/Runtime/engine/UIWidgetsPanel.cs +++ b/Runtime/engine/UIWidgetsPanel.cs @@ -130,7 +130,7 @@ bool _mouseEntered { void _handleViewMetricsChanged(string method, List args) { this._windowAdapter.onViewMetricsChanged(); - this._displayMetrics.Update(); + this._displayMetrics.onViewMetricsChanged(); } protected override void OnEnable() {