OSDN Git Service

#xxxxx Win10のバージョン(1709など)に応じた処理の振り分けがしやすいよう、COSをリファクタ。
authoryyagi <yyagi.dtxmania@gmail.com>
Thu, 21 Dec 2017 14:49:14 +0000 (23:49 +0900)
committeryyagi <yyagi.dtxmania@gmail.com>
Thu, 21 Dec 2017 14:49:14 +0000 (23:49 +0900)
DTXCreator/コード/00.全体/AppSetting.cs
DTXCreator/コード/03.オプション関連/Cオプション管理.cs
DTXMania/コード/ステージ/04.コンフィグ/CConfigXml.cs
FDK/コード/00.共通/COS.cs
FDK/コード/03.サウンド/CSoundDeviceWASAPI.cs

index e12a3e1..c4422e5 100644 (file)
@@ -411,7 +411,7 @@ namespace DTXCreator
                        public string PlayStartOption = "-N-1";
                        public string PlayStopOption = "-S";
                        // public ViewerSoundType SoundType = ( FDK.COS.bIsVistaOrLater ) ? ViewerSoundType.WASAPI : ViewerSoundType.DirectSound;
-                       public FDK.ESoundDeviceType SoundType = ( FDK.COS.bIsVistaOrLater ) ? FDK.ESoundDeviceType.ExclusiveWASAPI : FDK.ESoundDeviceType.DirectSound;
+                       public FDK.ESoundDeviceType SoundType = ( FDK.COS.bIsVistaOrLater() ) ? FDK.ESoundDeviceType.ExclusiveWASAPI : FDK.ESoundDeviceType.DirectSound;
                        public int ASIODeviceNo = 0;
                        public bool GRmode;
                        public bool TimeStretch;
@@ -425,8 +425,8 @@ namespace DTXCreator
                                PlayStartOption = "-N-1";
                                PlayStopOption = "-S";
                                //SoundType =  (FDK.COS.bIsVistaOrLater)? ViewerSoundType.WASAPI : ViewerSoundType.DirectSound;
-                               SoundType = ( FDK.COS.bIsVistaOrLater ) ?
-                                                               ( ( FDK.COS.bIsWin10OrLater ) ? FDK.ESoundDeviceType.SharedWASAPI : FDK.ESoundDeviceType.ExclusiveWASAPI )
+                               SoundType = ( FDK.COS.bIsVistaOrLater() ) ?
+                                                               ( ( FDK.COS.bIsWin10OrLater() ) ? FDK.ESoundDeviceType.SharedWASAPI : FDK.ESoundDeviceType.ExclusiveWASAPI )
                                                        : FDK.ESoundDeviceType.DirectSound;
                                ASIODeviceNo = 0;
                                GRmode = false;
index 6d6cfb9..5a18635 100644 (file)
@@ -81,7 +81,7 @@ namespace DTXCreator.オプション関連
                                this.formメインフォーム.appアプリ設定.ViewerInfo.bViewerIsDTXV = cオプションダイアログ.radioButton_UseDTXViewer.Checked;
 
                                //AppSetting.ViewerSoundType vst = ( FDK.COS.bIsVistaOrLater ) ? AppSetting.ViewerSoundType.WASAPI : AppSetting.ViewerSoundType.DirectSound;
-                               FDK.ESoundDeviceType vst = ( FDK.COS.bIsVistaOrLater ) ? FDK.ESoundDeviceType.ExclusiveWASAPI :  FDK.ESoundDeviceType.DirectSound;
+                               FDK.ESoundDeviceType vst = ( FDK.COS.bIsVistaOrLater() ) ? FDK.ESoundDeviceType.ExclusiveWASAPI :  FDK.ESoundDeviceType.DirectSound;
                                if ( cオプションダイアログ.radioButton_DirectSound.Checked )
                                {
                                        //vst = AppSetting.ViewerSoundType.DirectSound;
index 661783b..b4d37d6 100644 (file)
@@ -504,8 +504,8 @@ namespace DTXMania
                        bDynamicBassMixerManagement = new COptionBool(true);
                        bTimeStretch = new COptionBool(false);
                        nSoundDeviceType = new COptionEnum<ESoundDeviceTypeForConfig>(
-                               FDK.COS.bIsVistaOrLater ? 
-                                       (FDK.COS.bIsWin10OrLater? ESoundDeviceTypeForConfig.WASAPI_Shared : ESoundDeviceTypeForConfig.WASAPI_Exclusive) 
+                               FDK.COS.bIsVistaOrLater() ? 
+                                       (FDK.COS.bIsWin10OrLater()? ESoundDeviceTypeForConfig.WASAPI_Shared : ESoundDeviceTypeForConfig.WASAPI_Exclusive) 
                                        : ESoundDeviceTypeForConfig.DSound
                        );
                        bForceHighPowerPlan = new COptionBool( false );
index d0d694b..8fafce4 100644 (file)
@@ -11,45 +11,55 @@ namespace FDK
                /// OSがXP以前ならfalse, Vista以降ならtrueを返す
                /// </summary>
                /// <returns></returns>
-               public static bool bIsVistaOrLater
+               public static bool bIsVistaOrLater()
                {
-                       get
-                       {
-                               return bCheckOSVersion(6, 0);
-                       }
+                       return bCheckOSVersion(6, 0);
                }
                /// <summary>
                /// OSがVista以前ならfalse, Win7以降ならtrueを返す
                /// </summary>
                /// <returns></returns>
-               public static bool bIsWin7OrLater
+               public static bool bIsWin7OrLater()
                {
-                       get
-                       {
-                               return bCheckOSVersion(6, 1);
-                       }
+                       return bCheckOSVersion(6, 1);
                }
                /// <summary>
                /// OSがWin7以前ならfalse, Win8以降ならtrueを返す
                /// </summary>
                /// <returns></returns>
-               public static bool bIsWin8OrLater
+               public static bool bIsWin8OrLater()
                {
-                       get
-                       {
-                               return bCheckOSVersion(6, 2);
-                       }
+                       return bCheckOSVersion(6, 2);
+               }
+               /// <summary>
+               /// OSがWin10以前ならfalse, Win10以降ならtrueを返す
+               /// </summary>
+               /// <returns></returns>
+               public static bool bIsWin10OrLater()
+               {
+                       return bCheckOSVersion(10, 0);
                }
                /// <summary>
-               /// OSがWin8.1以前ならfalse, Win10以降ならtrueを返す
+               /// OSがWin10以降、かつ指定build以降ならtrueを返す
                /// </summary>
                /// <returns></returns>
-               public static bool bIsWin10OrLater
+               public static bool bIsWin10OrLater(WIN10BUILD build)
                {
-                       get
+                       if (bCheckOSVersion(10, 0))
                        {
-                               return bCheckOSVersion(10, 0);
+                               if ( GetWin10BuildNumber() >= build )
+                               {
+                                       return true;
+                               }
+                               else
+                               {
+                                       return false;
+                               }
                        }
+                       else
+                       {
+                               return false;
+                       };
                }
 
 
@@ -119,7 +129,7 @@ namespace FDK
                        RS1 = 14393,
                        RS2 = 15063,
                        RS3 = 16299,
-                       UNKNOWN = 999999,
+                       UNKNOWN = -1,
                        NOTWIN10 = 0
                }
                private static WIN10BUILD GetWin10BuildNumber()
index 6cd0824..a79c880 100644 (file)
@@ -265,7 +265,7 @@ namespace FDK
                Retry:
                        var flags = (mode == Eデバイスモード.排他) ? BASSWASAPIInit.BASS_WASAPI_AUTOFORMAT | BASSWASAPIInit.BASS_WASAPI_EXCLUSIVE : BASSWASAPIInit.BASS_WASAPI_AUTOFORMAT;
                        //var flags = ( mode == Eデバイスモード.排他 ) ? BASSWASAPIInit.BASS_WASAPI_AUTOFORMAT | BASSWASAPIInit.BASS_WASAPI_EVENT | BASSWASAPIInit.BASS_WASAPI_EXCLUSIVE : BASSWASAPIInit.BASS_WASAPI_AUTOFORMAT | BASSWASAPIInit.BASS_WASAPI_EVENT;
-                       if ( COS.bIsWin7OrLater && CSound管理.bSoundUpdateByEventWASAPI )
+                       if ( COS.bIsWin7OrLater() && CSound管理.bSoundUpdateByEventWASAPI )
                        {
                                flags |= BASSWASAPIInit.BASS_WASAPI_EVENT;      // Win7以降の場合は、WASAPIをevent drivenで動作させてCPU負荷減、レイテインシ改善
                        }
@@ -308,7 +308,7 @@ namespace FDK
                                }
                        }
 
-                       if (COS.bIsWin10OrLater && (mode == Eデバイスモード.共有))             // Win10 low latency shared mode support
+                       if (COS.bIsWin10OrLater() && (mode == Eデバイスモード.共有))           // Win10 low latency shared mode support
                        {
                                // バッファ自動設定をユーザーが望む場合は、periodを最小値にする。さもなくば、バッファサイズとしてユーザーが指定した値を、periodとして用いる。
                                if (n希望バッファサイズms == 0)