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

Commit f65f9bb8 authored by Hansong Zhang's avatar Hansong Zhang Committed by android-build-merger
Browse files

Merge "Revert "Remove media players if their backing session dissappears""

am: bb81ed59

Change-Id: Id1b80605c1b419e757dec67b027fd1ea7004e34d
parents 9bf56c74 bb81ed59
Loading
Loading
Loading
Loading
+9 −17
Original line number Diff line number Diff line
@@ -459,7 +459,6 @@ public class MediaPlayerList {
        if (playerId == mActivePlayerId && playerId != NO_ACTIVE_PLAYER) {
            getActivePlayer().unregisterCallback();
            mActivePlayerId = NO_ACTIVE_PLAYER;
            sendMediaUpdate(new MediaData(Util.empty_data(), null, null));
        }

        final MediaPlayerWrapper wrapper = mMediaPlayers.get(playerId);
@@ -537,35 +536,28 @@ public class MediaPlayerList {
            new MediaSessionManager.OnActiveSessionsChangedListener() {
        @Override
        public void onActiveSessionsChanged(
                List<android.media.session.MediaController> controllers) {
                List<android.media.session.MediaController> newControllers) {
            synchronized (MediaPlayerList.this) {
                Log.v(TAG, "onActiveSessionsChanged: number of controllers: "
                        + controllers.size());
                if (controllers.size() == 0) return;
                        + newControllers.size());
                if (newControllers.size() == 0) return;

                // Apps are allowed to have multiple MediaControllers. If an app does have
                // multiple controllers then controllers contains them in highest
                // multiple controllers then newControllers contains them in highest
                // priority order. Since we only want to keep the highest priority one,
                // we keep track of which controllers we updated and skip over ones
                // we've already looked at.
                HashSet<String> addedPackages = new HashSet<String>();

                for (int i = 0; i < controllers.size(); i++) {
                for (int i = 0; i < newControllers.size(); i++) {
                    Log.d(TAG, "onActiveSessionsChanged: controller: "
                            + controllers.get(i).getPackageName());
                    if (addedPackages.contains(controllers.get(i).getPackageName())) {
                            + newControllers.get(i).getPackageName());
                    if (addedPackages.contains(newControllers.get(i).getPackageName())) {
                        continue;
                    }

                    addedPackages.add(controllers.get(i).getPackageName());
                    addMediaPlayer(controllers.get(i));
                }

                // Remove all players that weren't added.
                for (String packageName : mMediaPlayerIds.keySet()) {
                    if (!addedPackages.contains(packageName)) {
                        removeMediaPlayer(mMediaPlayerIds.get(packageName));
                    }
                    addedPackages.add(newControllers.get(i).getPackageName());
                    addMediaPlayer(newControllers.get(i));
                }
            }
        }