Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 34f0951f authored by Presubmit Automerger Backend's avatar Presubmit Automerger Backend
Browse files

[automerge] Fix ServiceConnector failing unbind if not connected. 2p: efc50877

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17321988


Change-Id: If7c0bf7ab6c89e98bdecbc1ef98bf93313fa8176
Merged-In: I6a8c01390130bcec9aff1460004343ca2b207031
parents 16294cce efc50877
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -507,10 +507,21 @@ public interface ServiceConnector<I extends IInterface> {
        void unbindJobThread() {
            cancelTimeout();
            I service = mService;
            // TODO(b/224695239): This is actually checking wasConnected. Rename and/or fix
            // implementation based on what this should actually be checking. At least the first
            // check for calling unbind is the correct behavior, though.
            boolean wasBound = service != null;
            if (wasBound || mBinding) {
                try {
                    mContext.unbindService(mServiceConnection);
                } catch (IllegalArgumentException e) {  // TODO(b/224697137): Fix the race condition
                                                        // that requires catching this (crashes if
                                                        // service isn't currently bound).
                    Log.e(LOG_TAG, "Failed to unbind: " + e);
                }
            }
            if (wasBound) {
                onServiceConnectionStatusChanged(service, false);
                mContext.unbindService(mServiceConnection);
                service.asBinder().unlinkToDeath(this, 0);
                mService = null;
            }