Merge "Unregister the existing callback when MediaProjection stops" into mnc-dev

This commit is contained in:
Jae Seo
2015-08-05 00:07:11 +00:00
committed by Android (Google) Code Review

View File

@@ -127,10 +127,8 @@ public final class MediaProjectionManagerService extends SystemService
IBinder.DeathRecipient deathRecipient = new IBinder.DeathRecipient() { IBinder.DeathRecipient deathRecipient = new IBinder.DeathRecipient() {
@Override @Override
public void binderDied() { public void binderDied() {
synchronized (mLock) {
removeCallback(callback); removeCallback(callback);
} }
}
}; };
synchronized (mLock) { synchronized (mLock) {
mCallbackDelegate.add(callback); mCallbackDelegate.add(callback);
@@ -344,6 +342,7 @@ public final class MediaProjectionManagerService extends SystemService
public final String packageName; public final String packageName;
public final UserHandle userHandle; public final UserHandle userHandle;
private IMediaProjectionCallback mCallback;
private IBinder mToken; private IBinder mToken;
private IBinder.DeathRecipient mDeathEater; private IBinder.DeathRecipient mDeathEater;
private int mType; private int mType;
@@ -406,7 +405,8 @@ public final class MediaProjectionManagerService extends SystemService
throw new IllegalStateException( throw new IllegalStateException(
"Cannot start already started MediaProjection"); "Cannot start already started MediaProjection");
} }
registerCallback(callback); mCallback = callback;
registerCallback(mCallback);
try { try {
mToken = callback.asBinder(); mToken = callback.asBinder();
mDeathEater = new IBinder.DeathRecipient() { mDeathEater = new IBinder.DeathRecipient() {
@@ -435,8 +435,11 @@ public final class MediaProjectionManagerService extends SystemService
+ "pid=" + Binder.getCallingPid() + ")"); + "pid=" + Binder.getCallingPid() + ")");
return; return;
} }
mToken.unlinkToDeath(mDeathEater, 0);
stopProjectionLocked(this); stopProjectionLocked(this);
mToken.unlinkToDeath(mDeathEater, 0);
mToken = null;
unregisterCallback(mCallback);
mCallback = null;
} }
} }