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

Commit e17b2dd7 authored by Ji-Hwan Lee's avatar Ji-Hwan Lee
Browse files

Set mBound only when bind succeeds

Fixes an issue that TV input is disabled forever after package upgrade,
when it's upgraded while in use.  The root cause is as below:

- Package is killed while upgrade.
- Service disconnects, and tries to rebind for reconnecting, but bind fails
  because service is not available temporarily.  Still ServiceState.mBound is
  set to true.
- Should rebind next when callback is registered or new session is created,
  but doesn't because ServiceState is already marked bound.

Bug: 14981201
Change-Id: Ia5b0acb33f1247064213024438f114bc40238648
parent f43cea00
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -301,9 +301,8 @@ public final class TvInputManagerService extends SystemService {

            Intent i = new Intent(TvInputService.SERVICE_INTERFACE).setComponent(
                    userState.inputMap.get(inputId).getComponent());
            mContext.bindServiceAsUser(i, serviceState.mConnection, Context.BIND_AUTO_CREATE,
                    new UserHandle(userId));
            serviceState.mBound = true;
            serviceState.mBound = mContext.bindServiceAsUser(
                    i, serviceState.mConnection, Context.BIND_AUTO_CREATE, new UserHandle(userId));
        } else if (serviceState.mService != null && isStateEmpty) {
            // This means that the service is already connected but its state indicates that we have
            // nothing to do with it. Then, disconnect the service.