Fix event concurrency for Java callers

This commit is contained in:
Him188 2020-04-29 18:20:34 +08:00
parent 2501cbb59a
commit 6a726050bc

View File

@ -56,11 +56,12 @@ internal fun <E : Event> CoroutineScope.Handler(
internal class Handler<in E : Event>
@PublishedApi internal constructor(
parentJob: Job?,
private val subscriberContext: CoroutineContext,
subscriberContext: CoroutineContext,
@JvmField val handler: suspend (E) -> ListeningStatus,
override val concurrencyKind: Listener.ConcurrencyKind
) :
Listener<E>, CompletableJob by Job(parentJob) {
) : Listener<E>, CompletableJob by SupervisorJob(parentJob) { // avoid being cancelled on handling event
private val subscriberContext: CoroutineContext = subscriberContext + this // override Job.
@MiraiInternalAPI
val lock: Mutex? = when (concurrencyKind) {