diff --git a/plugin_KinectOne/KinectOne.cs b/plugin_KinectOne/KinectOne.cs index 365ddf7..9331ec0 100644 --- a/plugin_KinectOne/KinectOne.cs +++ b/plugin_KinectOne/KinectOne.cs @@ -111,16 +111,7 @@ public void Initialize() public void Shutdown() { - // BodyFrameReader is IDisposable - BodyFrameReader?.Dispose(); - BodyFrameReader = null; - - // Close the kinect sensor - KinectSensor?.Close(); - KinectSensor = null; - - // Mark as not initialized - IsInitialized = false; + ShutdownInternal(); } public void Update() @@ -133,12 +124,42 @@ public void SignalJoint(int jointId) // ignored } + private void ShutdownInternal(bool unInitialize = true) + { + // BodyFrameReader is IDisposable + BodyFrameReader?.Dispose(); + BodyFrameReader = null; + + // Close the kinect sensor + KinectSensor?.Close(); + KinectSensor = null; + + // Mark as not initialized + if (unInitialize) + IsInitialized = false; + } + private bool InitKinect() { if ((KinectSensor = KinectSensor.GetDefault()) is null) return false; try { + try + { + // Try to open the kinect sensor + KinectSensor.Open(); // Open 0th + Thread.Sleep(500); + + // First try to de-init the sensor + ShutdownInternal(false); + Thread.Sleep(500); + } + catch + { + // ignored + } + // Try to open the kinect sensor KinectSensor.Open(); // Open 1st for (var i = 0; i < 20; i++)