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

Commit 256a7c4a authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Store active player avoid it was deleted by other threads" into main

parents 9bad8358 6dea2095
Loading
Loading
Loading
Loading
+19 −8
Original line number Diff line number Diff line
@@ -971,24 +971,35 @@ public class MediaPlayerList {
            return;
        }

        if (playerId == mActivePlayerId) {
            Log.w(TAG, getActivePlayer().getPackageName() + " is already the active player");
        int previousActivePlayerId = mActivePlayerId;
        MediaPlayerWrapper previousPlayer = getActivePlayer();

        if (playerId == previousActivePlayerId) {
            if (previousPlayer != null) {
                Log.w(TAG, previousPlayer.getPackageName() + " is already the active player");
            }
            return;
        }

        if (mActivePlayerId != NO_ACTIVE_PLAYER) getActivePlayer().unregisterCallback();
        if (previousActivePlayerId != NO_ACTIVE_PLAYER && previousPlayer != null) {
            previousPlayer.unregisterCallback();
        }

        mActivePlayerId = playerId;
        getActivePlayer().registerCallback(mMediaPlayerCallback);

        MediaPlayerWrapper player = getActivePlayer();
        if (player == null) return;

        player.registerCallback(mMediaPlayerCallback);
        mActivePlayerLogger.logd(
                TAG, "setActivePlayer(): setting player to " + getActivePlayer().getPackageName());
                TAG, "setActivePlayer(): setting player to " + player.getPackageName());

        if (mPlayerSettingsListener != null) {
            mPlayerSettingsListener.onActivePlayerChanged(getActivePlayer());
            mPlayerSettingsListener.onActivePlayerChanged(player);
        }

        // Ensure that metadata is synced on the new player
        if (!getActivePlayer().isMetadataSynced()) {
        if (!player.isMetadataSynced()) {
            Log.w(TAG, "setActivePlayer(): Metadata not synced on new player");
            return;
        }
@@ -1006,7 +1017,7 @@ public class MediaPlayerList {
            }
        }

        MediaData data = getActivePlayer().getCurrentMediaData();
        MediaData data = player.getCurrentMediaData();
        if (mAudioPlaybackIsActive) {
            data.state = mCurrMediaData.state;
            Log.d(TAG, "setActivePlayer mAudioPlaybackIsActive=true, state=" + data.state);