summaryrefslogtreecommitdiff
path: root/quickstep/src
diff options
context:
space:
mode:
author Sukesh Ram <sukeshram@google.com> 2025-03-20 13:57:35 -0700
committer Sukesh Ram <sukeshram@google.com> 2025-03-20 13:57:35 -0700
commit602874bb515a5676da891dd2fc322c57e00128e6 (patch)
treefc4df4dfaf13c3023e47aabbfca16d00708d7164 /quickstep/src
parent59a89b2655a66eaa9157bc57d9e45fbfa1cfc938 (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.java13
-rw-r--r--quickstep/src/com/android/quickstep/TouchInteractionService.java3
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