diff options
| -rw-r--r-- | services/accessibility/java/com/android/server/accessibility/magnification/WindowMagnificationManager.java | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/services/accessibility/java/com/android/server/accessibility/magnification/WindowMagnificationManager.java b/services/accessibility/java/com/android/server/accessibility/magnification/WindowMagnificationManager.java index d3d56d7f857d..9cbd78bf4482 100644 --- a/services/accessibility/java/com/android/server/accessibility/magnification/WindowMagnificationManager.java +++ b/services/accessibility/java/com/android/server/accessibility/magnification/WindowMagnificationManager.java @@ -68,6 +68,7 @@ public class WindowMagnificationManager implements private SparseArray<WindowMagnifier> mWindowMagnifiers = new SparseArray<>(); private int mUserId; + private boolean mReceiverRegistered = false; @VisibleForTesting protected final BroadcastReceiver mScreenStateReceiver = new BroadcastReceiver() { @Override @@ -150,10 +151,16 @@ public class WindowMagnificationManager implements } if (connect) { final IntentFilter intentFilter = new IntentFilter(Intent.ACTION_SCREEN_OFF); - mContext.registerReceiver(mScreenStateReceiver, intentFilter); + if (!mReceiverRegistered) { + mContext.registerReceiver(mScreenStateReceiver, intentFilter); + mReceiverRegistered = true; + } } else { disableAllWindowMagnifiers(); - mContext.unregisterReceiver(mScreenStateReceiver); + if (mReceiverRegistered) { + mContext.unregisterReceiver(mScreenStateReceiver); + mReceiverRegistered = false; + } } } @@ -240,6 +247,9 @@ public class WindowMagnificationManager implements void enableWindowMagnification(int displayId, float scale, float centerX, float centerY, @Nullable Runnable endCallback) { synchronized (mLock) { + if (mConnectionWrapper == null) { + return; + } WindowMagnifier magnifier = mWindowMagnifiers.get(displayId); if (magnifier == null) { magnifier = createWindowMagnifier(displayId); @@ -269,7 +279,7 @@ public class WindowMagnificationManager implements void disableWindowMagnification(int displayId, boolean clear, Runnable endCallback) { synchronized (mLock) { WindowMagnifier magnifier = mWindowMagnifiers.get(displayId); - if (magnifier == null) { + if (magnifier == null || mConnectionWrapper == null) { return; } magnifier.disableWindowMagnificationInternal(endCallback); |