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

Commit 0c304bd6 authored by Alex Shabalin's avatar Alex Shabalin Committed by Alexandr Shabalin
Browse files

Set mCurrentActivePosition in one place.

mCurrentActivePosition meant to prevent rerendering the whole device
list when only one route has changed. Unfortunately, it doesn't work
properly when there are more than one active devices e.g. group
playback.

Flag: EXEMPT refactor
Bug: 387570618
Test: atest SystemUiRoboTests:MediaOutputAdapterTest
Change-Id: Ia4a0eeb47aa04e0ec1667c060849282da91214d0
parent c3f74573
Loading
Loading
Loading
Loading
+4 −6
Original line number Diff line number Diff line
@@ -209,7 +209,6 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
                        && !mController.isCurrentConnectedDeviceRemote()) {
                    connectionState = ConnectionState.CONNECTED;
                    restrictVolumeAdjustment = true;
                    mCurrentActivePosition = position;
                    clickListener = v -> onItemClick(v, device);
                } else if (currentlyConnected && isMutingExpectedDeviceExist
                        && !mController.isCurrentConnectedDeviceRemote()) {
@@ -231,13 +230,11 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
                    boolean isActiveWithOngoingSession =
                            device.hasOngoingSession() && (currentlyConnected || isSelected);
                    if (isActiveWithOngoingSession) {
                        mCurrentActivePosition = position;
                        ongoingSessionStatus = new OngoingSessionStatus(
                                device.isHostForOngoingSession());
                        connectionState = ConnectionState.CONNECTED;
                    } else {
                        if (currentlyConnected) {
                            mCurrentActivePosition = position;
                            connectionState = ConnectionState.CONNECTED;
                        }
                        clickListener = getClickListenerBasedOnSelectionBehavior(device);
@@ -258,7 +255,6 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
                    connectionState = ConnectionState.CONNECTED;
                    // single selected device
                    if (device.hasOngoingSession()) {
                        mCurrentActivePosition = position;
                        ongoingSessionStatus = new OngoingSessionStatus(
                                device.isHostForOngoingSession());
                    } else if (mController.isCurrentConnectedDeviceRemote()
@@ -268,8 +264,6 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
                        groupStatus = new GroupStatus(
                                true /* selected */,
                                isDeselectable /* isDeselectable */);
                    } else {
                        mCurrentActivePosition = position;
                    }
                } else if (isSelectable) {
                    //groupable device
@@ -287,6 +281,10 @@ public class MediaOutputAdapter extends MediaOutputBaseAdapter {
                }
            }

            if (connectionState == ConnectionState.CONNECTED || isDeviceGroup) {
                mCurrentActivePosition = position;
            }

            if (isDeviceGroup) {
                String sessionName = mController.getSessionName() == null ? ""
                        : mController.getSessionName().toString();