fix: EDT deadlocks
This commit is contained in:
parent
cc7d1393d6
commit
5c682f6bfa
4 changed files with 8 additions and 4 deletions
|
@ -21,6 +21,7 @@ Changelog structure reference:
|
|||
|
||||
- Project
|
||||
- mkfifo/bash for zig progress visualization is now detected more reliably (fixes error on macOS)
|
||||
- Deadlock when launching zig build tasks
|
||||
|
||||
## [23.0.0]
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ import com.falsepattern.zigbrains.debugger.toolchain.*
|
|||
import com.falsepattern.zigbrains.debugger.win.MSVCDriverConfiguration
|
||||
import com.falsepattern.zigbrains.shared.coroutine.withEDTContext
|
||||
import com.falsepattern.zigbrains.zig.ZigLanguage
|
||||
import com.intellij.openapi.application.ModalityState
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.ui.DoNotAskOption
|
||||
import com.intellij.openapi.ui.MessageDialogBuilder
|
||||
|
@ -85,7 +86,7 @@ private suspend fun availabilityCheck(project: Project, kind: DebuggerKind): Boo
|
|||
}
|
||||
|
||||
if (downloadDebugger) {
|
||||
val result = withEDTContext {
|
||||
val result = withEDTContext(ModalityState.any()) {
|
||||
service.downloadDebugger(project, kind)
|
||||
}
|
||||
if (result is ZigDebuggerToolchainService.DownloadResult.Ok) {
|
||||
|
@ -104,7 +105,7 @@ private suspend fun showDialog(project: Project, message: String, action: String
|
|||
}
|
||||
}
|
||||
|
||||
return withEDTContext {
|
||||
return withEDTContext(ModalityState.any()) {
|
||||
MessageDialogBuilder
|
||||
.okCancel(ZigDebugBundle.message("debugger.run.unavailable"), message)
|
||||
.yesText(action)
|
||||
|
|
|
@ -40,6 +40,7 @@ import com.intellij.execution.runners.RunContentBuilder
|
|||
import com.intellij.execution.ui.ConsoleView
|
||||
import com.intellij.execution.ui.ConsoleViewContentType
|
||||
import com.intellij.execution.ui.RunContentDescriptor
|
||||
import com.intellij.openapi.application.ModalityState
|
||||
import com.intellij.platform.util.progress.reportProgress
|
||||
import com.intellij.xdebugger.XDebugProcess
|
||||
import com.intellij.xdebugger.XDebugProcessStarter
|
||||
|
@ -86,7 +87,7 @@ abstract class ZigDebugRunnerBase<ProfileState : ZigProfileState<*>> : ZigProgra
|
|||
}
|
||||
if (listener.isBuildFailed) {
|
||||
val executionResult = DefaultExecutionResult(console, listener.processHandler)
|
||||
return@reportProgress withEDTContext {
|
||||
return@reportProgress withEDTContext(ModalityState.any()) {
|
||||
val runContentBuilder = RunContentBuilder(executionResult, environment)
|
||||
runContentBuilder.showRunContent(null)
|
||||
}
|
||||
|
|
|
@ -32,12 +32,13 @@ import com.intellij.execution.executors.DefaultRunExecutor
|
|||
import com.intellij.execution.runners.ExecutionEnvironment
|
||||
import com.intellij.execution.runners.RunContentBuilder
|
||||
import com.intellij.execution.ui.RunContentDescriptor
|
||||
import com.intellij.openapi.application.ModalityState
|
||||
|
||||
class ZigRegularRunner: ZigProgramRunner<ZigProfileState<*>>(DefaultRunExecutor.EXECUTOR_ID) {
|
||||
override suspend fun execute(state: ZigProfileState<*>, toolchain: AbstractZigToolchain, environment: ExecutionEnvironment): RunContentDescriptor? {
|
||||
val cli = state.getCommandLine(toolchain, false)
|
||||
val exec = executeCommandLine(cli, environment)
|
||||
return withEDTContext {
|
||||
return withEDTContext(ModalityState.any()) {
|
||||
val runContentBuilder = RunContentBuilder(exec, environment)
|
||||
runContentBuilder.showRunContent(null)
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue