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

Commit 459b9679 authored by Alina Zaidi's avatar Alina Zaidi
Browse files

Make sure animation in StatusBarOrchestrator are in main thread

Bug: 377440171
Flag: com.android.systemui.status_bar_connected_displays
Test: manually tested status bar animation on primary display
Change-Id: I9df36e6b8a0f0e4541f7df163edc7307aa2226f3
parent 5eb9df51
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -18,8 +18,10 @@ package com.android.systemui.statusbar.core

import android.view.Display
import android.view.View
import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.systemui.CoreStartable
import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.demomode.DemoModeController
import com.android.systemui.dump.DumpManager
import com.android.systemui.plugins.DarkIconDispatcher
@@ -46,12 +48,12 @@ import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
import java.io.PrintWriter
import java.util.Optional
import kotlin.coroutines.CoroutineContext
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChangedBy
import kotlinx.coroutines.flow.filterNotNull
import com.android.app.tracing.coroutines.launchTraced as launch

/**
 * Class responsible for managing the lifecycle and state of the status bar.
@@ -68,6 +70,7 @@ constructor(
    @Assisted private val statusBarModeRepository: StatusBarModePerDisplayRepository,
    @Assisted private val statusBarInitializer: StatusBarInitializer,
    @Assisted private val statusBarWindowController: StatusBarWindowController,
    @Main private val mainContext: CoroutineContext,
    private val demoModeController: DemoModeController,
    private val pluginDependencyProvider: PluginDependencyProvider,
    private val autoHideController: AutoHideController,
@@ -141,7 +144,8 @@ constructor(
    override fun start() {
        StatusBarConnectedDisplays.assertInNewMode()
        coroutineScope
            .launch {
            // Perform animations on the main thread to prevent crashes.
            .launch(context = mainContext) {
                dumpManager.registerCriticalDumpable(dumpableName, this@StatusBarOrchestrator)
                launch {
                    controllerAndBouncerShowing.collect { (controller, bouncerShowing) ->
+1 −0
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@ val Kosmos.statusBarOrchestrator by
            fakeStatusBarModePerDisplayRepository,
            fakeStatusBarInitializer,
            fakeStatusBarWindowController,
            applicationCoroutineScope.coroutineContext,
            mockDemoModeController,
            mockPluginDependencyProvider,
            mockAutoHideController,