/// <summary> /// Called when the window closes, used to shutdown client systems. /// </summary> private void Window_Closed(object sender, EventArgs e) { if (VR != null) { VR.Stop(); VR = null; } Sounds.Shutdown(); if (RawGamePad != null) { RawGamePad.Dispose(); RawGamePad = null; } if (LocalServer != null) { // TODO: ManualReset object? Object tlock = new Object(); bool done = false; LocalServer.ShutDown(() => { lock (tlock) { done = true; } }); bool b = false; while (!b) { Thread.Sleep(250); lock (tlock) { b = done; } } } // TODO: Cleanup! OnClosed?.Invoke(); Environment.Exit(0); }
private void Window_Closed(object sender, EventArgs e) { Sounds.StopAll(); if (RawGamePad != null) { RawGamePad.Dispose(); RawGamePad = null; } if (LocalServer != null) { Object tlock = new Object(); bool done = false; LocalServer.ShutDown(() => { lock (tlock) { done = true; } }); bool b = false; while (!b) { Thread.Sleep(250); lock (tlock) { b = done; } } } // TODO: Cleanup! Environment.Exit(0); }
private void Dispose(bool manual) { if (manual) { xinput.Dispose(); } else { Debug.Print("{0} leaked, did you forget to call Dispose()?", typeof(XInputJoystick).Name); } }