Skip to content

Commit 893da89

Browse files
committed
stops creating the HVRCommsUtil on quitting
1 parent 83dff85 commit 893da89

2 files changed

Lines changed: 19 additions & 3 deletions

File tree

Basis/Packages/dev.hai-vr.basis.comms/Scripts/Systems/Runtime/Networking/HVRCommsUtil.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,25 @@ namespace HVR.Basis.Comms
99
{
1010
public static class HVRCommsUtil
1111
{
12+
private static bool _applicationIsQuitting;
13+
14+
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)]
15+
private static void InitializeQuitGuard()
16+
{
17+
_applicationIsQuitting = false;
18+
Application.quitting -= OnApplicationQuitting;
19+
Application.quitting += OnApplicationQuitting;
20+
}
21+
22+
private static void OnApplicationQuitting()
23+
{
24+
_applicationIsQuitting = true;
25+
}
26+
1227
public static T GetOrCreateSceneInstance<T>(ref T instance) where T : Component
1328
{
1429
if (instance != null) return instance;
30+
if (_applicationIsQuitting) return null;
1531

1632
var go = new GameObject($"HVR.{typeof(T).Name}");
1733
Object.DontDestroyOnLoad(go);

Basis/Packages/dev.hai-vr.basis.comms/Scripts/Systems/Runtime/OSC/BasisOscService.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ public static void PublishValue(string address, OscData value)
197197

198198
public static void PublishValues(string address, OscData[] values)
199199
{
200-
OSCAcquisitionServer.SceneInstance.PublishValues(address, values);
200+
OSCAcquisitionServer.SceneInstance?.PublishValues(address, values);
201201
}
202202

203203
public static void UpdateSubscriptions(EntityId ownerId, bool receiveAll, IEnumerable<string> subscribedAddresses, IEnumerable<string> subscribedPrefixes)
@@ -219,7 +219,7 @@ public static void UpdateSubscriptions(EntityId ownerId, bool receiveAll, IEnume
219219
RebuildDispatcherState_NoLock();
220220
}
221221
// (eventual consistency is acceptable) and this avoids a potential deadlock if the acquisition server needs to call back into this service while processing the subscription update.
222-
OSCAcquisitionServer.SceneInstance.UpdateSubscriptions(ownerId, exactAddresses, prefixAddresses);
222+
OSCAcquisitionServer.SceneInstance?.UpdateSubscriptions(ownerId, exactAddresses, prefixAddresses);
223223
}
224224

225225
public static void UpdateSubscriptions(EntityId ownerId, IEnumerable<string> subscribedAddresses, IEnumerable<string> subscribedPrefixes)
@@ -240,7 +240,7 @@ public static void ClearSubscriptions(EntityId ownerId)
240240
}
241241
}
242242

243-
OSCAcquisitionServer.SceneInstance.ClearSubscriptions(ownerId);
243+
OSCAcquisitionServer.SceneInstance?.ClearSubscriptions(ownerId);
244244
}
245245

246246
private static void RebuildDispatcherState_NoLock()

0 commit comments

Comments
 (0)