From dce83437f11af98e72fb6e68cbe8157a22808519 Mon Sep 17 00:00:00 2001 From: CranberrySoup <142951702+CranberrySoup@users.noreply.github.com> Date: Thu, 18 Jan 2024 14:49:56 +0000 Subject: [PATCH] Update Event.kt --- .../com/lagradost/cloudstream3/utils/Event.kt | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/lagradost/cloudstream3/utils/Event.kt b/app/src/main/java/com/lagradost/cloudstream3/utils/Event.kt index 57a5f8e4..fc568d01 100644 --- a/app/src/main/java/com/lagradost/cloudstream3/utils/Event.kt +++ b/app/src/main/java/com/lagradost/cloudstream3/utils/Event.kt @@ -1,9 +1,13 @@ package com.lagradost.cloudstream3.utils +import com.lagradost.cloudstream3.utils.Coroutines.ioSafe +import kotlinx.coroutines.sync.Mutex +import kotlinx.coroutines.sync.withLock + class Event { private val observers = mutableSetOf<(T) -> Unit>() - val size : Int get() = observers.size + val size: Int get() = observers.size operator fun plusAssign(observer: (T) -> Unit) { observers.add(observer) @@ -13,8 +17,14 @@ class Event { observers.remove(observer) } + private val invokeMutex = Mutex() + operator fun invoke(value: T) { - for (observer in observers) - observer(value) + ioSafe { + invokeMutex.withLock { // Can crash otherwise + for (observer in observers) + observer(value) + } + } } -} \ No newline at end of file +}