summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Minche Li <mincheli@google.com> 2020-09-14 03:10:22 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-09-14 03:10:22 +0000
commitc2f1b05ce592df2fa65e6a7504e23384ea8a89b9 (patch)
treee277178e8e7fd121678142b937e6d8428e0ad6e0
parent1dcf7dfc537f8c6d235554f1613925eb73f77a77 (diff)
parentc58ce9a8677338937aa4b2f18840ea1e26d06b20 (diff)
Merge "Prevents the broadcastReceiver unregistered when it's not registerd"
-rw-r--r--services/accessibility/java/com/android/server/accessibility/magnification/WindowMagnificationManager.java16
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);