Fix random bugs

This commit is contained in:
Natsumi
2025-10-21 16:22:42 +11:00
parent 6cf626f14f
commit 5a16cf8d6d
9 changed files with 15 additions and 12 deletions
+1 -1
View File
@@ -21,7 +21,7 @@ namespace VRCX
public override void VrInit() public override void VrInit()
{ {
if (MainForm.Instance?.Browser != null && !MainForm.Instance.Browser.IsLoading && MainForm.Instance.Browser.CanExecuteJavascriptInMainFrame) if (MainForm.Instance?.Browser != null && !MainForm.Instance.Browser.IsLoading && MainForm.Instance.Browser.CanExecuteJavascriptInMainFrame)
MainForm.Instance.Browser.ExecuteScriptAsync("$pinia.vr.vrInit", ""); MainForm.Instance.Browser.ExecuteScriptAsync("window?.$pinia.vr.vrInit");
} }
public override void ToggleSystemMonitor(bool enabled) public override void ToggleSystemMonitor(bool enabled)
+1 -1
View File
@@ -36,7 +36,7 @@ namespace VRCX
// TODO: fix this throwing an exception for being called before the browser is ready. somehow it gets past the checks // TODO: fix this throwing an exception for being called before the browser is ready. somehow it gets past the checks
if (MainForm.Instance?.Browser != null && !MainForm.Instance.Browser.IsLoading && MainForm.Instance.Browser.CanExecuteJavascriptInMainFrame) if (MainForm.Instance?.Browser != null && !MainForm.Instance.Browser.IsLoading && MainForm.Instance.Browser.CanExecuteJavascriptInMainFrame)
MainForm.Instance.Browser.ExecuteScriptAsync("$pinia.game.updateIsGameRunning", isGameRunning, isSteamVRRunning, isHmdAfk); MainForm.Instance.Browser.ExecuteScriptAsync("window?.$pinia.game.updateIsGameRunning", isGameRunning, isSteamVRRunning, isHmdAfk);
} }
public override bool IsGameRunning() public override bool IsGameRunning()
+1 -1
View File
@@ -26,7 +26,7 @@ namespace VRCX
} }
if (MainForm.Instance?.Browser != null && !MainForm.Instance.Browser.IsLoading && MainForm.Instance.Browser.CanExecuteJavascriptInMainFrame) if (MainForm.Instance?.Browser != null && !MainForm.Instance.Browser.IsLoading && MainForm.Instance.Browser.CanExecuteJavascriptInMainFrame)
MainForm.Instance.Browser.ExecuteScriptAsync("$pinia.vrcx.dragEnterCef", file); MainForm.Instance.Browser.ExecuteScriptAsync("window?.$pinia.vrcx.dragEnterCef", file);
dragData.Dispose(); dragData.Dispose();
return false; return false;
+1 -1
View File
@@ -86,7 +86,7 @@ namespace VRCX
Browser.GotFocus += (_, _) => Browser.GotFocus += (_, _) =>
{ {
if (Browser != null && !Browser.IsLoading && Browser.CanExecuteJavascriptInMainFrame) if (Browser != null && !Browser.IsLoading && Browser.CanExecuteJavascriptInMainFrame)
Browser.ExecuteScriptAsync("$pinia.vrcStatus.onBrowserFocus()"); Browser.ExecuteScriptAsync("window?.$pinia.vrcStatus.onBrowserFocus");
}; };
JavascriptBindings.ApplyAppJavascriptBindings(Browser.JavascriptObjectRepository); JavascriptBindings.ApplyAppJavascriptBindings(Browser.JavascriptObjectRepository);
+3 -3
View File
@@ -60,7 +60,7 @@ namespace VRCX
} }
catch catch
{ {
IPCServer.Clients.Remove(this); IPCServer.Clients.TryRemove(this, out _);
} }
} }
@@ -72,7 +72,7 @@ namespace VRCX
if (bytesRead <= 0) if (bytesRead <= 0)
{ {
IPCServer.Clients.Remove(this); IPCServer.Clients.TryRemove(this, out _);
_ipcServer.Close(); _ipcServer.Close();
return; return;
} }
@@ -90,7 +90,7 @@ namespace VRCX
#if !LINUX #if !LINUX
if (MainForm.Instance?.Browser != null && !MainForm.Instance.Browser.IsLoading && MainForm.Instance.Browser.CanExecuteJavascriptInMainFrame) if (MainForm.Instance?.Browser != null && !MainForm.Instance.Browser.IsLoading && MainForm.Instance.Browser.CanExecuteJavascriptInMainFrame)
MainForm.Instance.Browser.ExecuteScriptAsync("$pinia.vrcx.ipcEvent", packet); MainForm.Instance.Browser.ExecuteScriptAsync("window?.$pinia.vrcx.ipcEvent", packet);
#endif #endif
} }
+4 -3
View File
@@ -5,6 +5,7 @@
// For a copy, see <https://opensource.org/licenses/MIT>. // For a copy, see <https://opensource.org/licenses/MIT>.
using System; using System;
using System.Collections.Concurrent;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO.Pipes; using System.IO.Pipes;
using System.Threading.Tasks; using System.Threading.Tasks;
@@ -14,7 +15,7 @@ namespace VRCX
public class IPCServer public class IPCServer
{ {
public static readonly IPCServer Instance; public static readonly IPCServer Instance;
public static readonly List<IPCClient> Clients = new List<IPCClient>(); public static readonly ConcurrentDictionary<IPCClient, byte> Clients = new();
static IPCServer() static IPCServer()
{ {
@@ -30,7 +31,7 @@ namespace VRCX
{ {
foreach (var client in Clients) foreach (var client in Clients)
{ {
client?.Send(ipcPacket); client.Key?.Send(ipcPacket);
} }
} }
@@ -64,7 +65,7 @@ namespace VRCX
} }
var ipcClient = new IPCClient(ipcServer); var ipcClient = new IPCClient(ipcServer);
Clients.Add(ipcClient); Clients.TryAdd(ipcClient, 0);
ipcClient.BeginRead(); ipcClient.BeginRead();
CreateIPCServer(); CreateIPCServer();
} }
+1 -1
View File
@@ -297,7 +297,7 @@ namespace VRCX
m_LogQueue.Enqueue(logLine); m_LogQueue.Enqueue(logLine);
#else #else
if (MainForm.Instance != null && MainForm.Instance.Browser != null) if (MainForm.Instance != null && MainForm.Instance.Browser != null)
MainForm.Instance.Browser.ExecuteScriptAsync("$pinia.gameLog.addGameLogEvent", logLine); MainForm.Instance.Browser.ExecuteScriptAsync("window?.$pinia.gameLog.addGameLogEvent", logLine);
#endif #endif
} }
@@ -367,6 +367,7 @@
useAuthStore, useAuthStore,
useAvatarProviderStore, useAvatarProviderStore,
useAvatarStore, useAvatarStore,
useGameLogStore,
useGroupStore, useGroupStore,
useInstanceStore, useInstanceStore,
useLaunchStore, useLaunchStore,
@@ -395,6 +396,7 @@
const { showLaunchOptions } = useLaunchStore(); const { showLaunchOptions } = useLaunchStore();
const { enablePrimaryPasswordChange } = useAuthStore(); const { enablePrimaryPasswordChange } = useAuthStore();
const { showConsole, clearVRCXCache, showRegistryBackupDialog } = useVrcxStore(); const { showConsole, clearVRCXCache, showRegistryBackupDialog } = useVrcxStore();
const { disableGameLogDialog } = useGameLogStore();
const { cachedUsers } = useUserStore(); const { cachedUsers } = useUserStore();
const { cachedWorlds } = useWorldStore(); const { cachedWorlds } = useWorldStore();