mirror of
https://github.com/mamoe/mirai.git
synced 2025-03-14 07:10:09 +08:00
[console/terminal] Fix input queue blocked when previous request was cancelled
This commit is contained in:
parent
6e7dcadcf9
commit
3763996590
@ -69,7 +69,7 @@ internal object JLineInputDaemon : Runnable {
|
|||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if (nextTask.coroutine.isCancelled) continue
|
if (nextTask.coroutine.isCompleted) continue
|
||||||
|
|
||||||
|
|
||||||
synchronized(queueStateChangeNoticer) {
|
synchronized(queueStateChangeNoticer) {
|
||||||
@ -120,7 +120,7 @@ internal object JLineInputDaemon : Runnable {
|
|||||||
suspendReader(true)
|
suspendReader(true)
|
||||||
return@invokeOnCancellation
|
return@invokeOnCancellation
|
||||||
}
|
}
|
||||||
if (nnextTask2.coroutine.isCancelled) continue
|
if (nnextTask2.coroutine.isCompleted) continue
|
||||||
|
|
||||||
nnextTask = nnextTask2
|
nnextTask = nnextTask2
|
||||||
break
|
break
|
||||||
@ -156,6 +156,26 @@ internal object JLineInputDaemon : Runnable {
|
|||||||
}.addLast(req)
|
}.addLast(req)
|
||||||
|
|
||||||
queueStateChangeNoticer.notify()
|
queueStateChangeNoticer.notify()
|
||||||
|
|
||||||
|
if (crtProcessing != null && crtProcessing.coroutine.isCompleted) {
|
||||||
|
val nnextTask: Request
|
||||||
|
while (true) {
|
||||||
|
val nnextTask2 = queue.poll() ?: queueDelayable.poll()
|
||||||
|
if (nnextTask2 == null) {
|
||||||
|
nnextTask = req
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if (nnextTask2.coroutine.isCompleted) continue
|
||||||
|
|
||||||
|
nnextTask = nnextTask2
|
||||||
|
break
|
||||||
|
}
|
||||||
|
processing = nnextTask
|
||||||
|
updateFlags(nnextTask)
|
||||||
|
if (lineReader.isReading) {
|
||||||
|
readerImpl.redisplay()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
tryResumeReader(true)
|
tryResumeReader(true)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user