@@ -261,7 +261,7 @@ internal abstract class EventLoopBase: CoroutineDispatcher(), Delay, EventLoop {
261261 _delayed .compareAndSet(null , ThreadSafeHeap ())
262262 _delayed .value!!
263263 }
264- return delayedTask.schedule(delayed)
264+ return delayedTask.schedule(delayed, this )
265265 }
266266
267267 internal fun removeDelayedImpl (delayedTask : DelayedTask ) {
@@ -289,7 +289,7 @@ internal abstract class EventLoopBase: CoroutineDispatcher(), Delay, EventLoop {
289289 }
290290 }
291291
292- internal abstract inner class DelayedTask (
292+ internal abstract class DelayedTask (
293293 timeMillis : Long
294294 ) : Runnable, Comparable<DelayedTask>, DisposableHandle, ThreadSafeHeapNode {
295295 private var _heap : Any? = null // null | ThreadSafeHeap | DISPOSED_TASK
@@ -317,9 +317,9 @@ internal abstract class EventLoopBase: CoroutineDispatcher(), Delay, EventLoop {
317317 fun timeToExecute (now : Long ): Boolean = now - nanoTime >= 0L
318318
319319 @Synchronized
320- fun schedule (delayed : ThreadSafeHeap <DelayedTask >): Int {
320+ fun schedule (delayed : ThreadSafeHeap <DelayedTask >, eventLoop : EventLoopBase ): Int {
321321 if (_heap == = DISPOSED_TASK ) return SCHEDULE_DISPOSED // don't add -- was already disposed
322- return if (delayed.addLastIf(this ) { ! isCompleted }) SCHEDULE_OK else SCHEDULE_COMPLETED
322+ return if (delayed.addLastIf(this ) { ! eventLoop. isCompleted }) SCHEDULE_OK else SCHEDULE_COMPLETED
323323 }
324324
325325 // note: DefaultExecutor.schedule performs `schedule` (above) which does sync & checks for DISPOSED_TASK
@@ -352,7 +352,7 @@ internal abstract class EventLoopBase: CoroutineDispatcher(), Delay, EventLoop {
352352 }
353353
354354 // Cannot be moved to DefaultExecutor due to BE bug
355- internal inner class DelayedRunnableTask (
355+ internal class DelayedRunnableTask (
356356 time : Long ,
357357 private val block : Runnable
358358 ) : DelayedTask(time) {
0 commit comments