Ejemplo n.º 1
0
 /// <summary>
 /// Disposes all used resources
 /// </summary>
 public void Dispose()
 {
     Stop();
     inputDevice.Dispose();
     xInput.Dispose();
     xOutputInterface.Dispose();
 }
 public void tポーリング(bool bWindowがアクティブ中, bool bバッファ入力を使用する)
 {
     lock (this.objMidiIn排他用)
     {
         //				foreach( IInputDevice device in this.list入力デバイス )
         for (int i = this.list入力デバイス.Count - 1; i >= 0; i--)                    // #24016 2011.1.6 yyagi: change not to use "foreach" to avoid InvalidOperation exception by Remove().
         {
             IInputDevice device = this.list入力デバイス[i];
             try
             {
                 device.tポーリング(bWindowがアクティブ中, bバッファ入力を使用する);
             }
             catch (SharpDX.SharpDXException e)                                                          // #24016 2011.1.6 yyagi: catch exception for unplugging USB joystick, and remove the device object from the polling items.
             {
                 if (e.ResultCode == ResultCode.OtherApplicationHasPriority)
                 {
                     // #xxxxx: 2017.5.9: from: このエラーの時は、何もしない。
                 }
                 else
                 {
                     // #xxxxx: 2017.5.9: from: その他のエラーの場合は、デバイスが外されたと想定してRemoveする。
                     this.list入力デバイス.Remove(device);
                     device.Dispose();
                     Trace.TraceError("tポーリング時に対象deviceが抜かれており例外発生。同deviceをポーリング対象からRemoveしました。");
                 }
             }
         }
     }
 }
Ejemplo n.º 3
0
 public virtual void Close()
 {
     try
     {
         IOmonitor.IdleForLock(_IOprocessing);
         //
         bool locked;
         if (_InputDevice != null && _InputDevice.IsInitialized && _InputDevice.InitializedBy == ParentIDE.Machine)
         {
             locked = false;
             if (_InputDevice.IsLockingRequiredForDispose())
             {
                 IOmonitor.IdleForLock(_InputDevice, out locked);
             }
             _InputDevice.Dispose();
             if (locked)
             {
                 IOmonitor.Unlock(_InputDevice);
             }
         }
         _InputBuffer     = new byte[0];
         _InBuffPtr       = 0;
         _InputWordBuffer = new string[0];
         _WdBuffPtr       = 0;
     }
     finally
     {
         //
         IOmonitor.Unlock(_IOprocessing);
     }
 }
Ejemplo n.º 4
0
        public void tポーリング(bool bWindowがアクティブ中, bool bバッファ入力を使用する)
        {
            lock (this.objMidiIn排他用)
            {
//				foreach( IInputDevice device in this.list入力デバイス )
                for (int i = this.list入力デバイス.Count - 1; i >= 0; i--)                    // #24016 2011.1.6 yyagi: change not to use "foreach" to avoid InvalidOperation exception by Remove().
                {
                    IInputDevice device = this.list入力デバイス[i];
                    try
                    {
                        device.tポーリング(bWindowがアクティブ中, bバッファ入力を使用する);
                    }
                    catch (DirectInputException)                                                                        // #24016 2011.1.6 yyagi: catch exception for unplugging USB joystick, and remove the device object from the polling items.
                    {
                        this.list入力デバイス.Remove(device);
                        device.Dispose();
                        Trace.TraceError("tポーリング時に対象deviceが抜かれており例外発生。同deviceをポーリング対象からRemoveしました。");
                    }
                }
            }
        }
Ejemplo n.º 5
0
 public void tPolling(bool bIsWindowActive, bool bEnableBufferInput)
 {
     lock (this.objMidiIn排他用)
     {
         //				foreach( IInputDevice device in this.listInputDevices )
         for (int i = this.listInputDevices.Count - 1; i >= 0; i--)                    // #24016 2011.1.6 yyagi: change not to use "foreach" to avoid InvalidOperation exception by Remove().
         {
             IInputDevice device = this.listInputDevices[i];
             try
             {
                 device.tPolling(bIsWindowActive, bEnableBufferInput);
             }
             catch (Exception e)                                                          // #24016 2011.1.6 yyagi: catch exception for unplugging USB joystick, and remove the device object from the polling items.
             {
                 this.listInputDevices.Remove(device);
                 device.Dispose();
                 Trace.TraceError("tPolling時に例外発生。該当deviceをポーリング対象からRemoveしました。");
                 Trace.TraceError(e.ToString());
             }
         }
     }
 }
Ejemplo n.º 6
0
 public void Dispose()
 {
     Stop();
     inputDevice.Dispose();
     scpDevice?.Dispose();
 }