From 9884ed19fa6828be44ca300fc6ec38f07665435c Mon Sep 17 00:00:00 2001 From: hstyi Date: Fri, 14 Mar 2025 21:14:20 +0800 Subject: [PATCH] chore: macOS dispatch_async --- build.gradle.kts | 1 - .../kotlin/app/termora/native/FileChooser.kt | 6 ++-- .../app/termora/native/osx/DispatchNative.kt | 36 ------------------- 3 files changed, 3 insertions(+), 40 deletions(-) delete mode 100644 src/main/kotlin/app/termora/native/osx/DispatchNative.kt diff --git a/build.gradle.kts b/build.gradle.kts index 20a02ca..a966e65 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -127,7 +127,6 @@ application { ) if (os.isMacOsX) { - args.add("--add-opens java.desktop/sun.lwawt.macosx.concurrent=ALL-UNNAMED") args.add("-Dsun.java2d.metal=true") args.add("-Dapple.awt.application.appearance=system") } diff --git a/src/main/kotlin/app/termora/native/FileChooser.kt b/src/main/kotlin/app/termora/native/FileChooser.kt index fa238ee..a5b9f4a 100644 --- a/src/main/kotlin/app/termora/native/FileChooser.kt +++ b/src/main/kotlin/app/termora/native/FileChooser.kt @@ -1,7 +1,7 @@ package app.termora.native -import app.termora.native.osx.DispatchNative import com.formdev.flatlaf.util.SystemInfo +import de.jangassen.jfa.ThreadUtils import de.jangassen.jfa.foundation.Foundation import jnafilechooser.api.JnaFileChooser import org.apache.commons.lang3.StringUtils @@ -94,7 +94,7 @@ class FileChooser { private fun showMacOSOpenDialog(future: CompletableFuture>) { - DispatchNative.getInstance().dispatch_async(object : Runnable { + ThreadUtils.dispatch_async(object : Runnable { override fun run() { val pool = Foundation.NSAutoreleasePool() try { @@ -170,7 +170,7 @@ class FileChooser { } private fun showMacOSSaveDialog(filename: String, future: CompletableFuture) { - DispatchNative.getInstance().dispatch_async(object : Runnable { + ThreadUtils.dispatch_async(object : Runnable { override fun run() { val pool = Foundation.NSAutoreleasePool() try { diff --git a/src/main/kotlin/app/termora/native/osx/DispatchNative.kt b/src/main/kotlin/app/termora/native/osx/DispatchNative.kt deleted file mode 100644 index 97a7edf..0000000 --- a/src/main/kotlin/app/termora/native/osx/DispatchNative.kt +++ /dev/null @@ -1,36 +0,0 @@ -package app.termora.native.osx - -import app.termora.ApplicationScope -import java.lang.reflect.Method - -class DispatchNative private constructor() { - companion object { - fun getInstance(): DispatchNative { - return ApplicationScope.forApplicationScope().getOrCreate(DispatchNative::class) { DispatchNative() } - } - } - - val dispatch_main_queue: Long - - private val nativeExecuteAsync: Method - - init { - val clazz = Class.forName("sun.lwawt.macosx.concurrent.LibDispatchNative") - - val nativeGetMainQueue = clazz.getDeclaredMethod("nativeGetMainQueue") - nativeGetMainQueue.isAccessible = true - dispatch_main_queue = nativeGetMainQueue.invoke(null) as Long - - nativeExecuteAsync = clazz.getDeclaredMethod( - "nativeExecuteAsync", - *arrayOf(Long::class.java, Runnable::class.java) - ) - nativeExecuteAsync.isAccessible = true - - } - - - fun dispatch_async(runnable: Runnable) { - nativeExecuteAsync.invoke(null, dispatch_main_queue, runnable) - } -} \ No newline at end of file