mirror of
https://github.com/mamoe/mirai.git
synced 2025-03-12 22:10:14 +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
|
||||
}
|
||||
if (nextTask.coroutine.isCancelled) continue
|
||||
if (nextTask.coroutine.isCompleted) continue
|
||||
|
||||
|
||||
synchronized(queueStateChangeNoticer) {
|
||||
@ -120,7 +120,7 @@ internal object JLineInputDaemon : Runnable {
|
||||
suspendReader(true)
|
||||
return@invokeOnCancellation
|
||||
}
|
||||
if (nnextTask2.coroutine.isCancelled) continue
|
||||
if (nnextTask2.coroutine.isCompleted) continue
|
||||
|
||||
nnextTask = nnextTask2
|
||||
break
|
||||
@ -156,6 +156,26 @@ internal object JLineInputDaemon : Runnable {
|
||||
}.addLast(req)
|
||||
|
||||
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)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user