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

Commit d5eb32f0 authored by Nicolo' Mazzucato's avatar Nicolo' Mazzucato
Browse files

Make ConnectedDisplayInteractor flows run in bg dispatcher

Before this cl there were IPC to DM in the main thread. Afterwards, they should only be in the background thread.

Flag: None
Fixes: 309798084
Test: ConnectedDisplayInteractorTest
Change-Id: Ic0fb2056db92f73c8922f03c2d54a354549685bf
parent c737d35e
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -20,15 +20,18 @@ import android.companion.virtual.VirtualDeviceManager
import android.companion.virtual.flags.Flags
import android.view.Display
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.display.data.repository.DisplayRepository
import com.android.systemui.display.domain.interactor.ConnectedDisplayInteractor.PendingDisplay
import com.android.systemui.display.domain.interactor.ConnectedDisplayInteractor.State
import com.android.systemui.keyguard.data.repository.KeyguardRepository
import javax.inject.Inject
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.flowOn
import kotlinx.coroutines.flow.map

/** Provides information about an external connected display. */
@@ -81,6 +84,7 @@ constructor(
    private val virtualDeviceManager: VirtualDeviceManager,
    keyguardRepository: KeyguardRepository,
    displayRepository: DisplayRepository,
    @Background backgroundCoroutineDispatcher: CoroutineDispatcher,
) : ConnectedDisplayInteractor {

    override val connectedDisplayState: Flow<State> =
@@ -101,6 +105,7 @@ constructor(
                    State.CONNECTED
                }
            }
            .flowOn(backgroundCoroutineDispatcher)
            .distinctUntilChanged()

    override val connectedDisplayAddition: Flow<Unit> =
@@ -108,6 +113,7 @@ constructor(
            .filter {
                it != null && (isExternalDisplay(it) || isVirtualDeviceOwnedMirrorDisplay(it))
            }
            .flowOn(backgroundCoroutineDispatcher)
            .map {} // map to Unit

    // Provides the pending display only if the lockscreen is unlocked
+2 −1
Original line number Diff line number Diff line
@@ -63,7 +63,8 @@ class ConnectedDisplayInteractorTest : SysuiTestCase() {
        ConnectedDisplayInteractorImpl(
            virtualDeviceManager,
            fakeKeyguardRepository,
            fakeDisplayRepository
            fakeDisplayRepository,
            UnconfinedTestDispatcher(),
        )
    private val testScope = TestScope(UnconfinedTestDispatcher())