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

Commit 853446d2 authored by Behnam Heydarshahi's avatar Behnam Heydarshahi Committed by Android (Google) Code Review
Browse files

Merge "Do not synchronize tile state callbacks" into main

parents f71346ec 5397ddb4
Loading
Loading
Loading
Loading
+24 −32
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ package com.android.systemui.qs.tiles.viewmodel
import android.content.Context
import android.os.UserHandle
import android.util.Log
import androidx.annotation.GuardedBy
import com.android.internal.logging.InstanceId
import com.android.systemui.Dumpable
import com.android.systemui.animation.Expandable
@@ -34,6 +33,7 @@ import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
import java.io.PrintWriter
import java.util.concurrent.CopyOnWriteArraySet
import java.util.function.Supplier
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Job
@@ -57,10 +57,8 @@ constructor(
    private val context
        get() = qsHost.context

    @GuardedBy("callbacks")
    private val callbacks: MutableCollection<QSTile.Callback> = mutableSetOf()
    @GuardedBy("listeningClients")
    private val listeningClients: MutableCollection<Any> = mutableSetOf()
    private val callbacks = CopyOnWriteArraySet<QSTile.Callback>()
    private val listeningClients = CopyOnWriteArraySet<Any>()

    // Cancels the jobs when the adapter is no longer alive
    private var tileAdapterJob: Job? = null
@@ -113,19 +111,17 @@ constructor(

    override fun addCallback(callback: QSTile.Callback?) {
        callback ?: return
        synchronized(callbacks) {
        callbacks.add(callback)
        state?.let(callback::onStateChanged)
    }
    }

    override fun removeCallback(callback: QSTile.Callback?) {
        callback ?: return
        synchronized(callbacks) { callbacks.remove(callback) }
        callbacks.remove(callback)
    }

    override fun removeCallbacks() {
        synchronized(callbacks) { callbacks.clear() }
        callbacks.clear()
    }

    override fun click(expandable: Expandable?) {
@@ -163,7 +159,6 @@ constructor(

    override fun setListening(client: Any?, listening: Boolean) {
        client ?: return
        synchronized(listeningClients) {
        if (listening) {
            listeningClients.add(client)
            if (listeningClients.size == 1) {
@@ -172,10 +167,8 @@ constructor(
                        .filterNotNull()
                        .map { mapState(context, it, qsTileViewModel.config) }
                        .onEach { legacyState ->
                                synchronized(callbacks) {
                            callbacks.forEach { it.onStateChanged(legacyState) }
                        }
                            }
                        .launchIn(applicationScope)
            }
        } else {
@@ -185,10 +178,9 @@ constructor(
            }
        }
    }
    }

    override fun isListening(): Boolean =
        synchronized(listeningClients) { listeningClients.isNotEmpty() }
        listeningClients.isNotEmpty()

    override fun setDetailListening(show: Boolean) {
        // do nothing like QSTileImpl