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

Commit 569d8873 authored by shannonchen's avatar shannonchen
Browse files

Fix bug where GameService#onDisconnected isn't called

As it is, since the disconnected call happens in
unbind, the call is immediately dropped due to the
unbinding instead of going through. This change is a
quick fix that makes it so that unbind always
happens after disconnect.

Bug: 223981361
Test: atest CtsGameServiceTestCases
Change-Id: Icd331e64dd2be80829b8baead521906bb7d41bae
parent 1a89ec70
Loading
Loading
Loading
Loading
+5 −11
Original line number Diff line number Diff line
@@ -85,15 +85,6 @@ final class GameServiceProviderInstanceImpl implements GameServiceProviderInstan
                        Slog.w(TAG, "Failed to send connected event", ex);
                    }
                }

                @Override
                public void onDisconnected(@NonNull IGameService service) {
                    try {
                        service.disconnected();
                    } catch (RemoteException ex) {
                        Slog.w(TAG, "Failed to send disconnected event", ex);
                    }
                }
            };

    private final ServiceLifecycleCallbacks<IGameSessionService>
@@ -181,7 +172,8 @@ final class GameServiceProviderInstanceImpl implements GameServiceProviderInstan
        }

        @Override
        public void onForegroundServicesChanged(int pid, int uid, int serviceTypes) {}
        public void onForegroundServicesChanged(int pid, int uid, int serviceTypes) {
        }
    };

    private final IGameServiceController mGameServiceController =
@@ -338,7 +330,9 @@ final class GameServiceProviderInstanceImpl implements GameServiceProviderInstan

        destroyAndClearAllGameSessionsLocked();

        mGameServiceConnector.post(IGameService::disconnected).whenComplete((result, t) -> {
            mGameServiceConnector.unbind();
        });
        mGameSessionServiceConnector.unbind();

        mGameServiceConnector.setServiceLifecycleCallbacks(null);