}\r
}\r
/// <summary>\r
+ /// OSがVista以前ならfalse, Win7以降ならtrueを返す\r
+ /// </summary>\r
+ /// <returns></returns>\r
+ public static bool bIsWin7OrLater\r
+ {\r
+ get\r
+ {\r
+ //プラットフォームの取得\r
+ System.OperatingSystem os = System.Environment.OSVersion;\r
+ if ( os.Platform != PlatformID.Win32NT ) // NT系でなければ、XP以前か、PC Windows系以外のOSのため、Win8以降ではない。よってfalseを返す。\r
+ {\r
+ return false;\r
+ }\r
+\r
+ if ( os.Version.Major >= 6 && os.Version.Minor >= 1 )\r
+ {\r
+ return true;\r
+ }\r
+ else\r
+ {\r
+ return false;\r
+ }\r
+ }\r
+ }\r
+ /// <summary>\r
/// OSがWin7以前ならfalse, Win8以降ならtrueを返す\r
/// </summary>\r
/// <returns></returns>\r
//Retry:\r
var flags = ( mode == Eデバイスモード.排他 ) ? BASSWASAPIInit.BASS_WASAPI_AUTOFORMAT | BASSWASAPIInit.BASS_WASAPI_EXCLUSIVE : BASSWASAPIInit.BASS_WASAPI_AUTOFORMAT;\r
//var flags = ( mode == Eデバイスモード.排他 ) ? BASSWASAPIInit.BASS_WASAPI_AUTOFORMAT | BASSWASAPIInit.BASS_WASAPI_EVENT | BASSWASAPIInit.BASS_WASAPI_EXCLUSIVE : BASSWASAPIInit.BASS_WASAPI_AUTOFORMAT | BASSWASAPIInit.BASS_WASAPI_EVENT;\r
+ if ( COS.bIsWin7OrLater && ( mode == Eデバイスモード.排他 ) )\r
+ {\r
+ flags |= BASSWASAPIInit.BASS_WASAPI_EVENT; // Win7以降の場合は、WASAPIをevent drivenで動作させてCPU負荷減、レイテインシ改善\r
+ }\r
if ( BassWasapi.BASS_WASAPI_Init( nデバイス, n周波数, nチャンネル数, flags, ( n希望バッファサイズms / 1000.0f ), ( n更新間隔ms / 1000.0f ), this.tWasapiProc, IntPtr.Zero ) )\r
{\r
if( mode == Eデバイスモード.排他 )\r
}\r
protected void Dispose( bool bManagedDispose )\r
{\r
- if ( w != null )\r
- {\r
- w.Stop(); // finish\r
- }\r
+ //if ( w != null )\r
+ //{\r
+ // w.Stop(); // finish\r
+ //}\r
this.e出力デバイス = ESoundDeviceType.Unknown; // まず出力停止する(Dispose中にクラス内にアクセスされることを防ぐ)\r
if ( hMixer != -1 )\r
{\r