diff options
| author | 2015-08-05 00:07:11 +0000 | |
|---|---|---|
| committer | 2015-08-05 00:07:11 +0000 | |
| commit | 2094a702b33f0bc4e1c22b85a8a6e8bc8988a079 (patch) | |
| tree | 76fd02d48ba384a2da8b51747904a80be528841a | |
| parent | 0d6168835a6114a9e346278e4613e9175a907fd3 (diff) | |
| parent | ac3f8e5534b1653a29714b63a3afbc6c1a90e669 (diff) | |
Merge "Unregister the existing callback when MediaProjection stops" into mnc-dev
| -rw-r--r-- | services/core/java/com/android/server/media/projection/MediaProjectionManagerService.java | 13 |
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 a029b0e63971..3ea4f2c78a19 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; } } |