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

Commit 4b6d20e5 authored by Nicolò Mazzucato's avatar Nicolò Mazzucato Committed by Android (Google) Code Review
Browse files

Merge "Register hinge angle sensor listener in a background thread" into tm-dev

parents 99497f45 89e5aa59
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.hardware.SensorManager
import android.hardware.devicestate.DeviceStateManager
import android.os.Handler
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.dagger.qualifiers.UiBackground
import com.android.systemui.unfold.config.UnfoldTransitionConfig
import com.android.systemui.unfold.updates.screen.ScreenStatusProvider
import com.android.systemui.unfold.util.UnfoldTransitionATracePrefix
@@ -53,6 +54,7 @@ internal interface UnfoldSharedComponent {
            @BindsInstance sensorManager: SensorManager,
            @BindsInstance @Main handler: Handler,
            @BindsInstance @Main executor: Executor,
            @BindsInstance @UiBackground backgroundExecutor: Executor,
            @BindsInstance @UnfoldTransitionATracePrefix tracingTagPrefix: String,
            @BindsInstance contentResolver: ContentResolver = context.contentResolver
        ): UnfoldSharedComponent
+5 −2
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.unfold

import android.hardware.SensorManager
import com.android.systemui.dagger.qualifiers.UiBackground
import com.android.systemui.unfold.config.UnfoldTransitionConfig
import com.android.systemui.unfold.progress.FixedTimingTransitionProgressProvider
import com.android.systemui.unfold.progress.PhysicsBasedUnfoldTransitionProgressProvider
@@ -30,6 +31,7 @@ import com.android.systemui.unfold.util.ScaleAwareTransitionProgressProvider
import dagger.Module
import dagger.Provides
import java.util.Optional
import java.util.concurrent.Executor
import javax.inject.Singleton

@Module
@@ -67,10 +69,11 @@ class UnfoldSharedModule {
    @Provides
    fun hingeAngleProvider(
        config: UnfoldTransitionConfig,
        sensorManager: SensorManager
        sensorManager: SensorManager,
        @UiBackground executor: Executor
    ): HingeAngleProvider =
        if (config.isHingeAngleEnabled) {
            HingeSensorAngleProvider(sensorManager)
            HingeSensorAngleProvider(sensorManager, executor)
        } else {
            EmptyHingeAngleProvider
        }
+2 −0
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ fun createUnfoldTransitionProgressProvider(
    sensorManager: SensorManager,
    mainHandler: Handler,
    mainExecutor: Executor,
    backgroundExecutor: Executor,
    tracingTagPrefix: String
): UnfoldTransitionProgressProvider =
    DaggerUnfoldSharedComponent.factory()
@@ -53,6 +54,7 @@ fun createUnfoldTransitionProgressProvider(
            sensorManager,
            mainHandler,
            mainExecutor,
            backgroundExecutor,
            tracingTagPrefix)
        .unfoldTransitionProvider
        .orElse(null)
+12 −4
Original line number Diff line number Diff line
@@ -6,21 +6,29 @@ import android.hardware.SensorEventListener
import android.hardware.SensorManager
import android.os.Trace
import androidx.core.util.Consumer
import java.util.concurrent.Executor

internal class HingeSensorAngleProvider(private val sensorManager: SensorManager) :
internal class HingeSensorAngleProvider(
    private val sensorManager: SensorManager,
    private val executor: Executor
) :
    HingeAngleProvider {

    private val sensorListener = HingeAngleSensorListener()
    private val listeners: MutableList<Consumer<Float>> = arrayListOf()

    override fun start() {
    override fun start() = executor.execute {
        Trace.beginSection("HingeSensorAngleProvider#start")
        val sensor = sensorManager.getDefaultSensor(Sensor.TYPE_HINGE_ANGLE)
        sensorManager.registerListener(sensorListener, sensor, SensorManager.SENSOR_DELAY_FASTEST)
        sensorManager.registerListener(
            sensorListener,
            sensor,
            SensorManager.SENSOR_DELAY_FASTEST
        )
        Trace.endSection()
    }

    override fun stop() {
    override fun stop() = executor.execute {
        sensorManager.unregisterListener(sensorListener)
    }

Loading