Merge "Discard dead MmTelFeature Binder Instances" am: 9e1009dd55
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1575999 MUST ONLY BE SUBMITTED BY AUTOMERGER Change-Id: Ia3a57c891b4be0d45d7b7686cc85bd8a01512ddb
This commit is contained in:
@@ -44,8 +44,12 @@ public class ImsEcbmImplBase {
|
|||||||
@Override
|
@Override
|
||||||
public void setListener(IImsEcbmListener listener) {
|
public void setListener(IImsEcbmListener listener) {
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
if (mImsEcbm != null && listener != null && Objects.equals(
|
if (mListener != null && !mListener.asBinder().isBinderAlive()) {
|
||||||
mImsEcbm.asBinder(), listener.asBinder())) {
|
Log.w(TAG, "setListener: discarding dead Binder");
|
||||||
|
mListener = null;
|
||||||
|
}
|
||||||
|
if (mListener != null && listener != null && Objects.equals(
|
||||||
|
mListener.asBinder(), listener.asBinder())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (listener == null) {
|
if (listener == null) {
|
||||||
|
|||||||
@@ -48,6 +48,10 @@ public class ImsMultiEndpointImplBase {
|
|||||||
@Override
|
@Override
|
||||||
public void setListener(IImsExternalCallStateListener listener) throws RemoteException {
|
public void setListener(IImsExternalCallStateListener listener) throws RemoteException {
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
|
if (mListener != null && !mListener.asBinder().isBinderAlive()) {
|
||||||
|
Log.w(TAG, "setListener: discarding dead Binder");
|
||||||
|
mListener = null;
|
||||||
|
}
|
||||||
if (mListener != null && listener != null && Objects.equals(
|
if (mListener != null && listener != null && Objects.equals(
|
||||||
mListener.asBinder(), listener.asBinder())) {
|
mListener.asBinder(), listener.asBinder())) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ import android.annotation.SystemApi;
|
|||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.RemoteException;
|
import android.os.RemoteException;
|
||||||
import android.telephony.ims.ImsUtListener;
|
import android.telephony.ims.ImsUtListener;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import com.android.ims.internal.IImsUt;
|
import com.android.ims.internal.IImsUt;
|
||||||
import com.android.ims.internal.IImsUtListener;
|
import com.android.ims.internal.IImsUtListener;
|
||||||
@@ -41,6 +42,7 @@ import java.util.Objects;
|
|||||||
// will break other implementations of ImsUt maintained by other ImsServices.
|
// will break other implementations of ImsUt maintained by other ImsServices.
|
||||||
@SystemApi
|
@SystemApi
|
||||||
public class ImsUtImplBase {
|
public class ImsUtImplBase {
|
||||||
|
private static final String TAG = "ImsUtImplBase";
|
||||||
/**
|
/**
|
||||||
* Bar all incoming calls. (See 3GPP TS 24.611)
|
* Bar all incoming calls. (See 3GPP TS 24.611)
|
||||||
* @hide
|
* @hide
|
||||||
@@ -207,6 +209,11 @@ public class ImsUtImplBase {
|
|||||||
@Override
|
@Override
|
||||||
public void setListener(IImsUtListener listener) throws RemoteException {
|
public void setListener(IImsUtListener listener) throws RemoteException {
|
||||||
synchronized (mLock) {
|
synchronized (mLock) {
|
||||||
|
if (mUtListener != null
|
||||||
|
&& !mUtListener.getListenerInterface().asBinder().isBinderAlive()) {
|
||||||
|
Log.w(TAG, "setListener: discarding dead Binder");
|
||||||
|
mUtListener = null;
|
||||||
|
}
|
||||||
if (mUtListener != null && listener != null && Objects.equals(
|
if (mUtListener != null && listener != null && Objects.equals(
|
||||||
mUtListener.getListenerInterface().asBinder(), listener.asBinder())) {
|
mUtListener.getListenerInterface().asBinder(), listener.asBinder())) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user