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