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

Commit 06736028 authored by Steve Elliott's avatar Steve Elliott
Browse files

Dagger Providers for CoroutineScope + Dispatchers

Fixes: 237408543
Test: mp droid
Change-Id: Ia37d7aecd07dd8a3d5827aee8bffe23109f3403f
parent 6dfbb419
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -83,6 +83,7 @@ import com.android.systemui.unfold.SysUIUnfoldModule;
import com.android.systemui.user.UserModule;
import com.android.systemui.util.concurrency.SysUIConcurrencyModule;
import com.android.systemui.util.dagger.UtilModule;
import com.android.systemui.util.kotlin.CoroutinesModule;
import com.android.systemui.util.sensors.SensorModule;
import com.android.systemui.util.settings.SettingsUtilModule;
import com.android.systemui.util.time.SystemClock;
@@ -115,6 +116,7 @@ import dagger.Provides;
            AssistModule.class,
            BiometricsModule.class,
            ClockModule.class,
            CoroutinesModule.class,
            DreamModule.class,
            ControlsModule.class,
            DemoModeModule.class,
+41 −0
Original line number Diff line number Diff line
package com.android.systemui.util.kotlin

import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.Main
import dagger.Module
import dagger.Provides
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers

/** Providers for various coroutines-related constructs. */
@Module
object CoroutinesModule {
    @Provides
    @SysUISingleton
    @Application
    fun applicationScope(
        @Main dispatcher: CoroutineDispatcher,
    ): CoroutineScope = CoroutineScope(dispatcher)

    @Provides
    @SysUISingleton
    @Main
    fun mainDispatcher(): CoroutineDispatcher = Dispatchers.Main.immediate

    /**
     * Provide a [CoroutineDispatcher] backed by a thread pool containing at most X threads, where
     * X is the number of CPU cores available.
     *
     * Because there are multiple threads at play, there is no serialization order guarantee. You
     * should use a [kotlinx.coroutines.channels.Channel] for serialization if necessary.
     *
     * @see Dispatchers.Default
     */
    @Provides
    @SysUISingleton
    @Background
    fun bgDispatcher(): CoroutineDispatcher = Dispatchers.Default
}