diff --git a/app/src/main/java/io/xpipe/app/core/mode/AppBaseMode.java b/app/src/main/java/io/xpipe/app/core/mode/AppBaseMode.java index e8c60f739..1e6d8f2b4 100644 --- a/app/src/main/java/io/xpipe/app/core/mode/AppBaseMode.java +++ b/app/src/main/java/io/xpipe/app/core/mode/AppBaseMode.java @@ -88,6 +88,7 @@ public class AppBaseMode extends AppOperationMode { } var imagesLoaded = new CountDownLatch(1); + var iconsInit = new CountDownLatch(1); var iconsLoaded = new CountDownLatch(1); var browserLoaded = new CountDownLatch(1); var shellLoaded = new CountDownLatch(1); @@ -126,7 +127,7 @@ public class AppBaseMode extends AppOperationMode { AppPrefs.initStorage(); storageLoaded.countDown(); AppMcpServer.init(); - iconsLoaded.await(); + iconsInit.await(); StoreViewState.init(); AppMainWindow.loadingText("loadingSettings"); TrackEvent.info("Connection storage initialization thread completed"); @@ -155,7 +156,9 @@ public class AppBaseMode extends AppOperationMode { imagesLoaded.countDown(); SystemIconManager.init(); syncPrefsLoaded.await(); - SystemIconManager.initAdditional(); + var additional = SystemIconManager.initAdditional(); + iconsInit.countDown(); + SystemIconManager.loadAdditional(additional); iconsLoaded.countDown(); TrackEvent.info("Platform initialization thread completed"); }, diff --git a/app/src/main/java/io/xpipe/app/icon/SystemIconManager.java b/app/src/main/java/io/xpipe/app/icon/SystemIconManager.java index ac1b625d4..816ee2156 100644 --- a/app/src/main/java/io/xpipe/app/icon/SystemIconManager.java +++ b/app/src/main/java/io/xpipe/app/icon/SystemIconManager.java @@ -120,7 +120,8 @@ public class SystemIconManager { }); } - public static void initAdditional() { + public static List initAdditional() { + var l = new ArrayList(); for (var source : getEffectiveSources()) { if (!LOADED.containsKey(source)) { var data = SystemIconSourceData.of(source); @@ -129,15 +130,21 @@ public class SystemIconManager { var icon = new SystemIcon(source, systemIconSourceFile.getName()); ICONS.add(icon); }); - - try { - AppImages.loadRasterImages(SystemIconCache.getDirectory(source), "icons/" + source.getId()); - } catch (Exception e) { - ErrorEventFactory.fromThrowable(e).handle(); - } + l.add(source); } } sourceHash = calculateSourceHash(); + return l; + } + + public static void loadAdditional(List additional) { + for (var source : additional) { + try { + AppImages.loadRasterImages(SystemIconCache.getDirectory(source), "icons/" + source.getId()); + } catch (Exception e) { + ErrorEventFactory.fromThrowable(e).handle(); + } + } } public static synchronized void reloadSources() throws Exception {