diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java index 5e9406c9d507f..cf192f9a12726 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/gestural/EdgeBackGestureHandler.java @@ -254,8 +254,9 @@ public class EdgeBackGestureHandler implements PluginListener pip.setOnIsInPipStateChangedListener(null)); + + try { + mWindowManagerService.unregisterSystemGestureExclusionListener( + mGestureExclusionListener, mDisplayId); + } catch (RemoteException | IllegalArgumentException e) { + Log.e(TAG, "Failed to unregister window manager callbacks", e); + } + + } else { + mGestureNavigationSettingsObserver.register(); + updateDisplaySize(); + if (DEBUG_MISSING_GESTURE) { + Log.d(DEBUG_MISSING_GESTURE_TAG, "Register display listener"); + } + TaskStackChangeListeners.getInstance().registerTaskStackListener( + mTaskStackListener); + DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_SYSTEMUI, + mMainExecutor::execute, mOnPropertiesChangedListener); + mPipOptional.ifPresent(pip -> pip.setOnIsInPipStateChangedListener( + mOnIsInPipStateChangedListener)); + mDesktopModeOptional.ifPresent( + dm -> dm.addDesktopGestureExclusionRegionListener( + mDesktopCornersChangedListener, mMainExecutor)); + + try { + mWindowManagerService.registerSystemGestureExclusionListener( + mGestureExclusionListener, mDisplayId); + } catch (RemoteException | IllegalArgumentException e) { + Log.e(TAG, "Failed to register window manager callbacks", e); + } + + // Register input event receiver + mInputMonitor = mContext.getSystemService(InputManager.class).monitorGestureInput( + "edge-swipe", mDisplayId); + mInputEventReceiver = new InputChannelCompat.InputEventReceiver( + mInputMonitor.getInputChannel(), Looper.getMainLooper(), + Choreographer.getInstance(), this::onInputEvent); + + // Add a nav bar panel window + mIsNewBackAffordanceEnabled = mFeatureFlags.isEnabled(Flags.NEW_BACK_AFFORDANCE); + resetEdgeBackPlugin(); + mPluginManager.addPluginListener( + this, NavigationEdgeBackPlugin.class, /*allowMultiple=*/ false); + } + // Update the ML model resources. + updateMLModelState(); } finally { Trace.endSection(); } } - private void updateIsEnabledTraced() { - boolean isEnabled = mIsAttached && mIsGesturalModeEnabled; - if (isEnabled == mIsEnabled) { - return; - } - mIsEnabled = isEnabled; - disposeInputChannel(); - - if (mEdgeBackPlugin != null) { - mEdgeBackPlugin.onDestroy(); - mEdgeBackPlugin = null; - } - - if (!mIsEnabled) { - mGestureNavigationSettingsObserver.unregister(); - if (DEBUG_MISSING_GESTURE) { - Log.d(DEBUG_MISSING_GESTURE_TAG, "Unregister display listener"); - } - mPluginManager.removePluginListener(this); - TaskStackChangeListeners.getInstance().unregisterTaskStackListener(mTaskStackListener); - DeviceConfig.removeOnPropertiesChangedListener(mOnPropertiesChangedListener); - mPipOptional.ifPresent(pip -> pip.setOnIsInPipStateChangedListener(null)); - - try { - mWindowManagerService.unregisterSystemGestureExclusionListener( - mGestureExclusionListener, mDisplayId); - } catch (RemoteException | IllegalArgumentException e) { - Log.e(TAG, "Failed to unregister window manager callbacks", e); - } - - } else { - mGestureNavigationSettingsObserver.register(); - updateDisplaySize(); - if (DEBUG_MISSING_GESTURE) { - Log.d(DEBUG_MISSING_GESTURE_TAG, "Register display listener"); - } - TaskStackChangeListeners.getInstance().registerTaskStackListener(mTaskStackListener); - DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_SYSTEMUI, - mMainExecutor::execute, mOnPropertiesChangedListener); - mPipOptional.ifPresent( - pip -> pip.setOnIsInPipStateChangedListener(mOnIsInPipStateChangedListener)); - mDesktopModeOptional.ifPresent( - dm -> dm.addDesktopGestureExclusionRegionListener( - mDesktopCornersChangedListener, mMainExecutor)); - - try { - mWindowManagerService.registerSystemGestureExclusionListener( - mGestureExclusionListener, mDisplayId); - } catch (RemoteException | IllegalArgumentException e) { - Log.e(TAG, "Failed to register window manager callbacks", e); - } - - // Register input event receiver - mInputMonitor = mContext.getSystemService(InputManager.class).monitorGestureInput( - "edge-swipe", mDisplayId); - mInputEventReceiver = new InputChannelCompat.InputEventReceiver( - mInputMonitor.getInputChannel(), Looper.getMainLooper(), - Choreographer.getInstance(), this::onInputEvent); - - // Add a nav bar panel window - mIsNewBackAffordanceEnabled = mFeatureFlags.isEnabled(Flags.NEW_BACK_AFFORDANCE); - resetEdgeBackPlugin(); - mPluginManager.addPluginListener( - this, NavigationEdgeBackPlugin.class, /*allowMultiple=*/ false); - } - // Update the ML model resources. - updateMLModelState(); - } - @Override public void onPluginConnected(NavigationEdgeBackPlugin plugin, Context context) { setEdgeBackPlugin(plugin); @@ -762,9 +762,9 @@ public class EdgeBackGestureHandler implements PluginListener