diff --git a/app/src/main/java/io/xpipe/app/core/window/NativeMacOsWindowControl.java b/app/src/main/java/io/xpipe/app/core/window/NativeMacOsWindowControl.java index 7ed6c80b0..8ad5d189c 100644 --- a/app/src/main/java/io/xpipe/app/core/window/NativeMacOsWindowControl.java +++ b/app/src/main/java/io/xpipe/app/core/window/NativeMacOsWindowControl.java @@ -33,6 +33,6 @@ public class NativeMacOsWindowControl { return; } - NativeBridge.MacOsLibrary.INSTANCE.setAppearance(new NativeLong(nsWindow), seamlessFrame, darkMode); + NativeBridge.getMacOsLibrary().setAppearance(new NativeLong(nsWindow), seamlessFrame, darkMode); } } diff --git a/app/src/main/java/io/xpipe/app/util/NativeBridge.java b/app/src/main/java/io/xpipe/app/util/NativeBridge.java index 3badbdd50..81b5283c6 100644 --- a/app/src/main/java/io/xpipe/app/util/NativeBridge.java +++ b/app/src/main/java/io/xpipe/app/util/NativeBridge.java @@ -9,9 +9,27 @@ import java.util.Map; public class NativeBridge { - public static interface MacOsLibrary extends Library { + private static MacOsLibrary macOsLibrary; - public static MacOsLibrary INSTANCE = Native.load("xpipe_bridge", MacOsLibrary.class, Map.of()); + public static MacOsLibrary getMacOsLibrary() { + if (macOsLibrary == null) { + try { + var l = Native.load("xpipe_bridge", MacOsLibrary.class, Map.of()); + macOsLibrary = l; + } catch (Throwable t) { + ErrorEvent.fromThrowable(t).handle(); + macOsLibrary = new MacOsLibrary() { + @Override + public void setAppearance(NativeLong window, boolean seamlessFrame, boolean dark) { + + } + }; + } + } + return macOsLibrary; + } + + public static interface MacOsLibrary extends Library { public abstract void setAppearance(NativeLong window, boolean seamlessFrame, boolean dark); }