From e5e0d9fe510e3439dff7459bdef7ae5ee4173277 Mon Sep 17 00:00:00 2001 From: Siarhei Vishniakou Date: Mon, 5 Mar 2018 20:09:08 -0800 Subject: [PATCH] Use bool var judge whether the navi-keys enabled MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [Performance] if device enabled the system navigation keys,the system will go to readthe Settings.Secure.SYSTEM_NAVIGATION_KEYS_ENABLED provider while the driverreport KEYCODE_SYSTEM_NAVIGATION_RIGHT every times,this operation has a serious impact on performance Test: cherry-picked from aosp Bug: 74392035 Change-Id: Ia30d14c136b7798e2997d43bc601cb361c853e0d Signed-off-by: 周雷 (cherry picked from commit 6aed2ee2082c5ae2319a9e0e333e3d030ce75345) --- .../server/policy/PhoneWindowManager.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 8bc9830f49d5c..dc3eab2c2754e 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -721,6 +721,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { // Behavior of rotation suggestions. (See Settings.Secure.SHOW_ROTATION_SUGGESTION) int mShowRotationSuggestions; + // Whether system navigation keys are enabled + boolean mSystemNavigationKeysEnabled; + Display mDisplay; int mLandscapeRotation = 0; // default landscape rotation @@ -984,6 +987,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { resolver.registerContentObserver(Settings.Global.getUriFor( Settings.Global.POLICY_CONTROL), false, this, UserHandle.USER_ALL); + resolver.registerContentObserver(Settings.Global.getUriFor( + Settings.Secure.SYSTEM_NAVIGATION_KEYS_ENABLED), false, this, + UserHandle.USER_ALL); updateSettings(); } @@ -2359,6 +2365,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { Settings.Secure.INCALL_BACK_BUTTON_BEHAVIOR, Settings.Secure.INCALL_BACK_BUTTON_BEHAVIOR_DEFAULT, UserHandle.USER_CURRENT); + mSystemNavigationKeysEnabled = Settings.Secure.getIntForUser(resolver, + Settings.Secure.SYSTEM_NAVIGATION_KEYS_ENABLED, + 0, UserHandle.USER_CURRENT) == 1; // Configure rotation suggestions. int showRotationSuggestions = Settings.Secure.getIntForUser(resolver, @@ -6224,7 +6233,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { if (event.getAction() == KeyEvent.ACTION_UP) { if (!mAccessibilityManager.isEnabled() || !mAccessibilityManager.sendFingerprintGesture(event.getKeyCode())) { - if (areSystemNavigationKeysEnabled()) { + if (mSystemNavigationKeysEnabled) { sendSystemKeyToStatusBarAsync(event.getKeyCode()); } } @@ -7803,11 +7812,6 @@ public class PhoneWindowManager implements WindowManagerPolicy { Settings.Global.THEATER_MODE_ON, 0) == 1; } - private boolean areSystemNavigationKeysEnabled() { - return Settings.Secure.getIntForUser(mContext.getContentResolver(), - Settings.Secure.SYSTEM_NAVIGATION_KEYS_ENABLED, 0, UserHandle.USER_CURRENT) == 1; - } - @Override public boolean performHapticFeedbackLw(WindowState win, int effectId, boolean always) { if (!mVibrator.hasVibrator()) {