OSDN Git Service

#36261 WASAPIの動作をevent drivenなものに変更。
authoryyagi <yyagi@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Mon, 18 Apr 2016 12:55:57 +0000 (12:55 +0000)
committeryyagi <yyagi@16f42ceb-6dc6-49c8-ba94-f2d53467949d>
Mon, 18 Apr 2016 12:55:57 +0000 (12:55 +0000)
git-svn-id: http://svn.osdn.jp/svnroot/dtxmania/trunk@982 16f42ceb-6dc6-49c8-ba94-f2d53467949d

FDK17プロジェクト/コード/00.共通/COS.cs
FDK17プロジェクト/コード/03.サウンド/CSoundDeviceWASAPI.cs
実行時フォルダ(DTXCreator)/dll/FDK.dll
実行時フォルダ/DTXManiaGR.exe
実行時フォルダ/dll/FDK.dll

index ff28cc9..71384d5 100644 (file)
@@ -32,6 +32,31 @@ namespace FDK
                        }\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
index 32f3849..0064b7c 100644 (file)
@@ -214,6 +214,10 @@ namespace FDK
 //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
@@ -388,10 +392,10 @@ namespace FDK
                }\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
index 8d01786..ed67303 100644 (file)
Binary files a/実行時フォルダ(DTXCreator)/dll/FDK.dll and b/実行時フォルダ(DTXCreator)/dll/FDK.dll differ
index 09d9302..333d88d 100644 (file)
Binary files a/実行時フォルダ/DTXManiaGR.exe and b/実行時フォルダ/DTXManiaGR.exe differ
index 8d01786..ed67303 100644 (file)
Binary files a/実行時フォルダ/dll/FDK.dll and b/実行時フォルダ/dll/FDK.dll differ