diff options
author | 2025-03-20 13:57:35 -0700 | |
---|---|---|
committer | 2025-03-20 13:57:35 -0700 | |
commit | 602874bb515a5676da891dd2fc322c57e00128e6 (patch) | |
tree | fc4df4dfaf13c3023e47aabbfca16d00708d7164 /quickstep/src | |
parent | 59a89b2655a66eaa9157bc57d9e45fbfa1cfc938 (diff) |
[CD Taskbar] Bypass binder calls for TaskbarManager#getDefaultDisplayId()
Calls to TaskbarManager#getDefaultDisplay() were making binder calls each time, which caused a crash in cases where binder is blocked. Now, I cache the default displayId avoid these calls.
Flag: EXEMPT not adding new behavior
Bug: 400606685
Test: m
Change-Id: I4a0c0d0c99efb137119b2299d3259541379a6bb6
Diffstat (limited to 'quickstep/src')
-rw-r--r-- | quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java | 13 | ||||
-rw-r--r-- | quickstep/src/com/android/quickstep/TouchInteractionService.java | 3 |
2 files changed, 9 insertions, 7 deletions
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java index 1521715ce0..458f897eda 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java @@ -138,6 +138,7 @@ public class TaskbarManager { Settings.Secure.NAV_BAR_KIDS_MODE); private final Context mBaseContext; + private final int mPrimaryDisplayId; private final TaskbarNavButtonCallbacks mNavCallbacks; // TODO: Remove this during the connected displays lifecycle refactor. private final Context mPrimaryWindowContext; @@ -434,21 +435,21 @@ public class TaskbarManager { TaskbarNavButtonCallbacks navCallbacks, RecentsDisplayModel recentsDisplayModel) { mBaseContext = context; + mPrimaryDisplayId = mBaseContext.getDisplayId(); mAllAppsActionManager = allAppsActionManager; mNavCallbacks = navCallbacks; mRecentsDisplayModel = recentsDisplayModel; // Set up primary display. - int primaryDisplayId = getDefaultDisplayId(); debugPrimaryTaskbar("TaskbarManager constructor"); - mPrimaryWindowContext = createWindowContext(primaryDisplayId); + mPrimaryWindowContext = createWindowContext(getDefaultDisplayId()); mPrimaryWindowManager = mPrimaryWindowContext.getSystemService(WindowManager.class); DesktopVisibilityController.INSTANCE.get( mPrimaryWindowContext).registerTaskbarDesktopModeListener( mTaskbarDesktopModeListener); - createTaskbarRootLayout(primaryDisplayId); - createNavButtonController(primaryDisplayId); - createAndRegisterComponentCallbacks(primaryDisplayId); + createTaskbarRootLayout(getDefaultDisplayId()); + createNavButtonController(getDefaultDisplayId()); + createAndRegisterComponentCallbacks(getDefaultDisplayId()); SettingsCache.INSTANCE.get(mPrimaryWindowContext) .register(USER_SETUP_COMPLETE_URI, mOnSettingsChangeListener); @@ -1667,7 +1668,7 @@ public class TaskbarManager { } private int getDefaultDisplayId() { - return mBaseContext.getDisplayId(); + return mPrimaryDisplayId; } /** diff --git a/quickstep/src/com/android/quickstep/TouchInteractionService.java b/quickstep/src/com/android/quickstep/TouchInteractionService.java index 7878e68a94..3594ccd492 100644 --- a/quickstep/src/com/android/quickstep/TouchInteractionService.java +++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java @@ -1062,7 +1062,8 @@ public class TouchInteractionService extends Service { private boolean isHoverActionWithoutConsumer(MotionEvent event) { // Only process these events when taskbar is present. - TaskbarActivityContext tac = mTaskbarManager.getCurrentActivityContext(); + int displayId = event.getDisplayId(); + TaskbarActivityContext tac = mTaskbarManager.getTaskbarForDisplay(displayId); boolean isTaskbarPresent = tac != null && tac.getDeviceProfile().isTaskbarPresent && !tac.isPhoneMode(); return event.isHoverEvent() && (mUncheckedConsumer.getType() & TYPE_CURSOR_HOVER) == 0 |