diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/DesktopCoreModule.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/DesktopCoreModule.kt index c69e24bafeb28fb44490cc0e9129a00009bd2fe4..5464f843ee4477a98454c9db2738f5579de56310 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/DesktopCoreModule.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/DesktopCoreModule.kt @@ -79,6 +79,7 @@ import java.io.File import java.nio.file.Path import java.util.concurrent.Executor import javax.inject.Singleton +import javax.swing.SwingUtilities.isEventDispatchThread // corresponding Briar Android class in // briar/briar-android/src/main/java/org/briarproject/briar/android/AppModule.java @@ -149,7 +150,16 @@ internal class DesktopCoreModule( @Provides @Singleton @UiExecutor - fun provideUiExecutor(): Executor = Dispatchers.Swing.asExecutor() + fun provideUiExecutor(): Executor { + val swingExecutor = Dispatchers.Swing.asExecutor() + return Executor { command -> + if (isEventDispatchThread()) { + command.run() + } else { + swingExecutor.execute(command) + } + } + } @Provides @Singleton