예제 #1
0
 /// <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);
 }
예제 #2
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);
     }
 }