summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJae Seo <jaeseo@google.com>2015-08-05 00:14:13 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-08-05 00:14:13 +0000
commitc632313e7294d191fb616bf53b1b9d99ef1ed24a (patch)
tree02d725186cf67c547f6c0f669ae1dcbb6b51b6c1
parent64e26348bcb0f6282b71ff3577521d131f765a56 (diff)
parent2094a702b33f0bc4e1c22b85a8a6e8bc8988a079 (diff)
downloadframeworks_base-c632313e7294d191fb616bf53b1b9d99ef1ed24a.zip
frameworks_base-c632313e7294d191fb616bf53b1b9d99ef1ed24a.tar.gz
frameworks_base-c632313e7294d191fb616bf53b1b9d99ef1ed24a.tar.bz2
am 2094a702: Merge "Unregister the existing callback when MediaProjection stops" into mnc-dev
* commit '2094a702b33f0bc4e1c22b85a8a6e8bc8988a079': Unregister the existing callback when MediaProjection stops
-rw-r--r--services/core/java/com/android/server/media/projection/MediaProjectionManagerService.java13
1 files changed, 8 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/media/projection/MediaProjectionManagerService.java b/services/core/java/com/android/server/media/projection/MediaProjectionManagerService.java
index a029b0e..3ea4f2c 100644
--- a/services/core/java/com/android/server/media/projection/MediaProjectionManagerService.java
+++ b/services/core/java/com/android/server/media/projection/MediaProjectionManagerService.java
@@ -127,9 +127,7 @@ public final class MediaProjectionManagerService extends SystemService
IBinder.DeathRecipient deathRecipient = new IBinder.DeathRecipient() {
@Override
public void binderDied() {
- synchronized (mLock) {
- removeCallback(callback);
- }
+ removeCallback(callback);
}
};
synchronized (mLock) {
@@ -344,6 +342,7 @@ public final class MediaProjectionManagerService extends SystemService
public final String packageName;
public final UserHandle userHandle;
+ private IMediaProjectionCallback mCallback;
private IBinder mToken;
private IBinder.DeathRecipient mDeathEater;
private int mType;
@@ -406,7 +405,8 @@ public final class MediaProjectionManagerService extends SystemService
throw new IllegalStateException(
"Cannot start already started MediaProjection");
}
- registerCallback(callback);
+ mCallback = callback;
+ registerCallback(mCallback);
try {
mToken = callback.asBinder();
mDeathEater = new IBinder.DeathRecipient() {
@@ -435,8 +435,11 @@ public final class MediaProjectionManagerService extends SystemService
+ "pid=" + Binder.getCallingPid() + ")");
return;
}
- mToken.unlinkToDeath(mDeathEater, 0);
stopProjectionLocked(this);
+ mToken.unlinkToDeath(mDeathEater, 0);
+ mToken = null;
+ unregisterCallback(mCallback);
+ mCallback = null;
}
}