OSDN Git Service

#xxxxx WAASPI排他だけでなく、WASAPI共有を選べるよう、以前の仕様に戻した。今後のWin10 WASAPI共有対応への布石。なおこれに伴いSoundDev...
authoryyagi <yyagi.dtxmania@gmail.com>
Wed, 10 May 2017 14:01:46 +0000 (23:01 +0900)
committeryyagi <yyagi.dtxmania@gmail.com>
Wed, 10 May 2017 14:01:46 +0000 (23:01 +0900)
#37174 SharpDXへの移行後、VSyncWaitの切り替えでオプション項目の表示が乱れる問題を修正。

DTXManiaプロジェクト/コード/ステージ/04.コンフィグ/CActConfigList.cs
DTXManiaプロジェクト/コード/ステージ/04.コンフィグ/CConfigXml.cs
DTXManiaプロジェクト/コード/全体/CDTXMania.cs
DTXManiaプロジェクト/コード/全体/C定数.cs
FDK17プロジェクト/コード/03.サウンド/CSound.cs
FDK17プロジェクト/コード/03.サウンド/CSoundDeviceWASAPI.cs

index f4a8557..6cab663 100644 (file)
@@ -795,9 +795,12 @@ namespace DTXMania
                                                case ESoundDeviceTypeForConfig.ASIO:\r
                                                        soundDeviceType = ESoundDeviceType.ASIO;\r
                                                        break;\r
-                                               case ESoundDeviceTypeForConfig.WASAPI:\r
+                                               case ESoundDeviceTypeForConfig.WASAPI_Exclusive:\r
                                                        soundDeviceType = ESoundDeviceType.ExclusiveWASAPI;\r
                                                        break;\r
+                                               case ESoundDeviceTypeForConfig.WASAPI_Shared:\r
+                                                       soundDeviceType = ESoundDeviceType.SharedWASAPI;\r
+                                                       break;\r
                                                default:\r
                                                        soundDeviceType = ESoundDeviceType.Unknown;\r
                                                        break;\r
@@ -846,6 +849,7 @@ namespace DTXMania
                                this.tx三角矢印 = TextureFactory.tテクスチャの生成(CSkin.Path(@"Graphics\ScreenConfig triangle arrow.png"), false);\r
                                // スキン選択時に動的に設定するため、ここでは初期化しない\r
                                this.txSkinSample = null;\r
+                               OnListMenuの初期化();\r
                                base.OnManagedリソースの作成();\r
                        }\r
                }\r
@@ -859,6 +863,8 @@ namespace DTXMania
                                TextureFactory.tテクスチャの解放(ref this.txその他項目行パネル);\r
                                TextureFactory.tテクスチャの解放(ref this.tx三角矢印);\r
 \r
+                               OnListMenuの解放();\r
+\r
                                base.OnManagedリソースの解放();\r
                        }\r
                }\r
index e7fe7ce..b1f8373 100644 (file)
@@ -503,7 +503,7 @@ namespace DTXMania
                        bUseOSTimer = new COptionBool(false);\r
                        bDynamicBassMixerManagement = new COptionBool(true);\r
                        bTimeStretch = new COptionBool(false);\r
-                       nSoundDeviceType = new COptionEnum<ESoundDeviceTypeForConfig>(FDK.COS.bIsVistaOrLater ? ESoundDeviceTypeForConfig.WASAPI : ESoundDeviceTypeForConfig.DSound);\r
+                       nSoundDeviceType = new COptionEnum<ESoundDeviceTypeForConfig>(FDK.COS.bIsVistaOrLater ? ESoundDeviceTypeForConfig.WASAPI_Exclusive : ESoundDeviceTypeForConfig.DSound);\r
                        bForceHighPowerPlan = new COptionBool( false );\r
                        bEventDrivenWASAPI = new COptionBool( false );\r
                        bLoadDTXDetail = new COptionBool( false ); \r
index 7c06d15..02a2206 100644 (file)
@@ -320,7 +320,10 @@ namespace DTXMania
                                                        ConfigIni.nSoundDeviceType.Value = ESoundDeviceTypeForConfig.DSound;\r
                                                        break;\r
                                                case ESoundDeviceType.ExclusiveWASAPI:\r
-                                                       ConfigIni.nSoundDeviceType.Value = ESoundDeviceTypeForConfig.WASAPI;\r
+                                                       ConfigIni.nSoundDeviceType.Value = ESoundDeviceTypeForConfig.WASAPI_Exclusive;\r
+                                                       break;\r
+                                               case ESoundDeviceType.SharedWASAPI:\r
+                                                       ConfigIni.nSoundDeviceType.Value = ESoundDeviceTypeForConfig.WASAPI_Shared;\r
                                                        break;\r
                                                case ESoundDeviceType.ASIO:\r
                                                        ConfigIni.nSoundDeviceType.Value = ESoundDeviceTypeForConfig.ASIO;\r
@@ -638,9 +641,12 @@ namespace DTXMania
                                        case ESoundDeviceTypeForConfig.ASIO:\r
                                                soundDeviceType = ESoundDeviceType.ASIO;\r
                                                break;\r
-                                       case ESoundDeviceTypeForConfig.WASAPI:\r
+                                       case ESoundDeviceTypeForConfig.WASAPI_Exclusive:\r
                                                soundDeviceType = ESoundDeviceType.ExclusiveWASAPI;\r
                                                break;\r
+                                       case ESoundDeviceTypeForConfig.WASAPI_Shared:\r
+                                               soundDeviceType = ESoundDeviceType.SharedWASAPI;\r
+                                               break;\r
                                        default:\r
                                                soundDeviceType = ESoundDeviceType.Unknown;\r
                                                break;\r
index 3ed1d41..8f6543f 100644 (file)
@@ -646,7 +646,9 @@ namespace DTXMania
                [EnumMember]\r
                DSound,\r
                [EnumMember]\r
-               WASAPI,\r
+               WASAPI_Exclusive,\r
+               [EnumMember]\r
+               WASAPI_Shared,\r
                [EnumMember]\r
                ASIO,\r
        }\r
index 4a21da8..4612228 100644 (file)
@@ -265,10 +265,11 @@ namespace FDK
                        bUseOSTimer = _bUseOSTimer;\r
                        bSoundUpdateByEventWASAPI = _bSoundUpdateByEventWASAPI;\r
 \r
-                       ESoundDeviceType[] ESoundDeviceTypes = new ESoundDeviceType[ 4 ]\r
+                       ESoundDeviceType[] ESoundDeviceTypes = new ESoundDeviceType[ 5 ]\r
                        {\r
                                ESoundDeviceType.ExclusiveWASAPI,\r
                                ESoundDeviceType.ASIO,\r
+                               ESoundDeviceType.SharedWASAPI,\r
                                ESoundDeviceType.DirectSound,\r
                                ESoundDeviceType.Unknown\r
                        };\r
@@ -282,12 +283,15 @@ namespace FDK
                                case ESoundDeviceType.ASIO:\r
                                        n初期デバイス = 1;\r
                                        break;\r
-                               case ESoundDeviceType.DirectSound:\r
+                               case ESoundDeviceType.SharedWASAPI:\r
                                        n初期デバイス = 2;\r
                                        break;\r
-                               default:\r
+                               case ESoundDeviceType.DirectSound:\r
                                        n初期デバイス = 3;\r
                                        break;\r
+                               default:\r
+                                       n初期デバイス = 4;\r
+                                       break;\r
                        }\r
                        for ( SoundDeviceType = ESoundDeviceTypes[ n初期デバイス ]; ; SoundDeviceType = ESoundDeviceTypes[ ++n初期デバイス ] )\r
                        {\r
@@ -306,7 +310,7 @@ namespace FDK
                                        }\r
                                }\r
                        }\r
-                       if ( soundDeviceType == ESoundDeviceType.ExclusiveWASAPI || soundDeviceType == ESoundDeviceType.ASIO )\r
+                       if ( soundDeviceType == ESoundDeviceType.ExclusiveWASAPI || soundDeviceType == ESoundDeviceType.ASIO || soundDeviceType == ESoundDeviceType.SharedWASAPI )\r
                        {\r
                                //Bass.BASS_SetConfig( BASSConfig.BASS_CONFIG_UPDATETHREADS, 4 );\r
                                //Bass.BASS_SetConfig( BASSConfig.BASS_CONFIG_UPDATEPERIOD, 0 );\r
@@ -451,8 +455,9 @@ namespace FDK
                        switch ( SoundDeviceType )\r
                        {\r
                                case ESoundDeviceType.ExclusiveWASAPI:\r
+                                       return "WASAPI(Exclusive)";\r
                                case ESoundDeviceType.SharedWASAPI:\r
-                                       return "WASAPI";\r
+                                       return "WASAPI(Shared)";\r
                                case ESoundDeviceType.ASIO:\r
                                        return "ASIO";\r
                                case ESoundDeviceType.DirectSound:\r
index 5f9d4f1..c5af7e3 100644 (file)
@@ -237,7 +237,7 @@ namespace FDK
                        }\r
                        #endregion\r
 \r
-//Retry:\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 && CSound管理.bSoundUpdateByEventWASAPI )\r
@@ -296,16 +296,16 @@ namespace FDK
                                }\r
                        }\r
                        #region [ #31737 WASAPI排他モードのみ利用可能とし、WASAPI共有モードは使用できないようにするために、WASAPI共有モードでの初期化フローを削除する。 ]\r
-                       //else if ( mode == Eデバイスモード.排他 )\r
-                       //{\r
-                       //    Trace.TraceInformation("Failed to initialize setting BASS (WASAPI) mode [{0}]", Bass.BASS_ErrorGetCode().ToString() );\r
-                       //    #region [ 排他モードに失敗したのなら共有モードでリトライ。]\r
-                       //    //-----------------\r
-                       //    mode = Eデバイスモード.共有;\r
-                       //    goto Retry;\r
-                       //    //-----------------\r
-                       //    #endregion\r
-                       //}\r
+                       else if (mode == Eデバイスモード.排他)\r
+                       {\r
+                               Trace.TraceInformation("Failed to initialize setting BASS (WASAPI) mode [{0}]", Bass.BASS_ErrorGetCode().ToString());\r
+                               #region [ 排他モードに失敗したのなら共有モードでリトライ。]\r
+                               //-----------------\r
+                               mode = Eデバイスモード.共有;\r
+                               goto Retry;\r
+                               //-----------------\r
+                               #endregion\r
+                       }\r
                        #endregion\r
                        else\r
                        {\r