Snap for 4728508 from 751673a674379f856aa4311d0d8fc3cab31d038c to pi-release
Change-Id: Ia7399a7ca8c3e659457bdc8a60a4be05a7222078
diff --git a/src/com/android/server/telecom/Call.java b/src/com/android/server/telecom/Call.java
index b5e2958..d08ff39 100644
--- a/src/com/android/server/telecom/Call.java
+++ b/src/com/android/server/telecom/Call.java
@@ -1451,6 +1451,7 @@
if ((mConnectionProperties & Connection.PROPERTY_IS_RTT) ==
Connection.PROPERTY_IS_RTT) {
createRttStreams();
+ mWasEverRtt = true;
if (isEmergencyCall()) {
mCallsManager.setAudioRoute(CallAudioState.ROUTE_SPEAKER, null);
mCallsManager.mute(false);
@@ -2593,7 +2594,6 @@
if (!areRttStreamsInitialized()) {
Log.i(this, "Initializing RTT streams");
try {
- mWasEverRtt = true;
mInCallToConnectionServiceStreams = ParcelFileDescriptor.createReliablePipe();
mConnectionServiceToInCallStreams = ParcelFileDescriptor.createReliablePipe();
} catch (IOException e) {
diff --git a/src/com/android/server/telecom/ServiceBinder.java b/src/com/android/server/telecom/ServiceBinder.java
index f7844b4..f15570b 100644
--- a/src/com/android/server/telecom/ServiceBinder.java
+++ b/src/com/android/server/telecom/ServiceBinder.java
@@ -303,6 +303,7 @@
mIsBindingAborted = true;
} else {
logServiceDisconnected("unbind");
+ unlinkDeathRecipient();
mContext.unbindService(mServiceConnection);
mServiceConnection = null;
setBinder(null);
@@ -371,9 +372,25 @@
* Handles a service disconnection.
*/
private void handleServiceDisconnected() {
+ unlinkDeathRecipient();
setBinder(null);
}
+ /**
+ * Handles un-linking the death recipient from the service's binder.
+ */
+ private void unlinkDeathRecipient() {
+ if (mServiceDeathRecipient != null && mBinder != null) {
+ boolean unlinked = mBinder.unlinkToDeath(mServiceDeathRecipient, 0);
+ if (!unlinked) {
+ Log.i(this, "unlinkDeathRecipient: failed to unlink %s", mComponentName);
+ }
+ mServiceDeathRecipient = null;
+ } else {
+ Log.w(this, "unlinkDeathRecipient: death recipient is null.");
+ }
+ }
+
private void clearAbort() {
mIsBindingAborted = false;
}