Skip to content

Commit ab7a0f1

Browse files
authored
Merge pull request #7205 from keveleigh/fix-cached-coordinate-system
Update cached coordinate system whenever the underlying IntPtr changes
2 parents 2391bb1 + 6a2a845 commit ab7a0f1

File tree

2 files changed

+15
-13
lines changed

2 files changed

+15
-13
lines changed

Assets/MixedRealityToolkit.Providers/WindowsMixedReality/Shared/WindowsMixedRealityUtilities.cs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,20 +72,27 @@ public static SpatialCoordinateSystem SpatialCoordinateSystem
7272
{
7373
get
7474
{
75-
if (spatialCoordinateSystem == null && UtilitiesProvider != null && UtilitiesProvider.ISpatialCoordinateSystemPtr != IntPtr.Zero)
75+
if (UtilitiesProvider != null)
7676
{
77+
IntPtr newSpatialCoordinateSystemPtr = UtilitiesProvider.ISpatialCoordinateSystemPtr;
78+
if (newSpatialCoordinateSystemPtr != currentSpatialCoordinateSystemPtr && newSpatialCoordinateSystemPtr != IntPtr.Zero)
79+
{
7780
#if ENABLE_DOTNET
78-
spatialCoordinateSystem = GetSpatialCoordinateSystem(UtilitiesProvider.ISpatialCoordinateSystemPtr);
81+
spatialCoordinateSystem = GetSpatialCoordinateSystem(newSpatialCoordinateSystemPtr);
7982
#elif WINDOWS_UWP
80-
spatialCoordinateSystem = Marshal.GetObjectForIUnknown(UtilitiesProvider.ISpatialCoordinateSystemPtr) as SpatialCoordinateSystem;
83+
spatialCoordinateSystem = Marshal.GetObjectForIUnknown(newSpatialCoordinateSystemPtr) as SpatialCoordinateSystem;
8184
#elif DOTNETWINRT_PRESENT
82-
spatialCoordinateSystem = SpatialCoordinateSystem.FromNativePtr(UtilitiesProvider.ISpatialCoordinateSystemPtr);
85+
spatialCoordinateSystem = SpatialCoordinateSystem.FromNativePtr(newSpatialCoordinateSystemPtr);
8386
#endif
87+
currentSpatialCoordinateSystemPtr = newSpatialCoordinateSystemPtr;
88+
}
8489
}
8590
return spatialCoordinateSystem;
8691
}
8792
}
8893

94+
private static IntPtr currentSpatialCoordinateSystemPtr = IntPtr.Zero;
95+
8996
/// <summary>
9097
/// Access the underlying native current holographic frame.
9198
/// </summary>

Assets/MixedRealityToolkit.Providers/WindowsMixedReality/XRSDK/XRSDKWindowsMixedRealityUtilitiesProvider.cs

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,9 @@ public class XRSDKWindowsMixedRealityUtilitiesProvider : IWindowsMixedRealityUti
2323
IntPtr.Zero;
2424
#endif
2525

26-
/// <inheritdoc />
27-
IntPtr IWindowsMixedRealityUtilitiesProvider.IHolographicFramePtr
28-
{
29-
get
30-
{
31-
// NOTE: Currently unable to access HolographicFrame in XR SDK.
32-
return IntPtr.Zero;
33-
}
34-
}
26+
/// <summary>
27+
/// Currently unable to access HolographicFrame in XR SDK. Always returns IntPtr.Zero.
28+
/// </summary>
29+
IntPtr IWindowsMixedRealityUtilitiesProvider.IHolographicFramePtr => IntPtr.Zero;
3530
}
3631
}

0 commit comments

Comments
 (0)