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

Commit e84eb60b authored by Anton Potapov's avatar Anton Potapov Committed by Android (Google) Code Review
Browse files

Merge "Add critical sections to avoid ConcurrentModificationException" into main

parents 188b35e1 d7ed1812
Loading
Loading
Loading
Loading
+16 −4
Original line number Diff line number Diff line
@@ -83,26 +83,38 @@ class CommunalAppWidgetHost(
    override fun allocateAppWidgetId(): Int {
        return super.allocateAppWidgetId().also { appWidgetId ->
            backgroundScope.launch {
                synchronized(observers) {
                    observers.forEach { observer -> observer.onAllocateAppWidgetId(appWidgetId) }
                }
            }
        }
    }

    override fun deleteAppWidgetId(appWidgetId: Int) {
        super.deleteAppWidgetId(appWidgetId)
        backgroundScope.launch {
            synchronized(observers) {
                observers.forEach { observer -> observer.onDeleteAppWidgetId(appWidgetId) }
            }
        }
    }

    override fun startListening() {
        super.startListening()
        backgroundScope.launch { observers.forEach { observer -> observer.onHostStartListening() } }
        backgroundScope.launch {
            synchronized(observers) {
                observers.forEach { observer -> observer.onHostStartListening() }
            }
        }
    }

    override fun stopListening() {
        super.stopListening()
        backgroundScope.launch { observers.forEach { observer -> observer.onHostStopListening() } }
        backgroundScope.launch {
            synchronized(observers) {
                observers.forEach { observer -> observer.onHostStopListening() }
            }
        }
    }

    fun addObserver(observer: Observer) {