#28821 途中再生せいている状態で「最初から再生」するなどして、AVIやBGAが再生されている状態から再生しない状態に遷移すると、BGA/AVI画面が固まる問題を修正。
#28821 強制全AUTOが機能していなかった問題を修正。
#28821 DTXC側から、引数で再生方式(WASAPIなど)やサウンドデバイスを指定するところに、中途半端に対応。(大枠を作っただけれあり、実際にはまだ機能しません)
#28821 DTXMania側の曲読み込み画面で、DTXCから再生指示が来た場合は、無視するよう修正。(DTXC側で再生を連打するなどするとこの状況に陥る)
#28821 一時的に、DLLの存在チェックを省略するようにした。(DTXC側の呼び出し時にDLLが見つからないエラーが出るため。しかし実際にはDLLが存在し、動作もする。)
#28821 DirectSoundモードで、サウンド停止時にエラーが出る場合がある問題を修正。(DTXManiaでWASAPI/ASIOを使用していて、DTXCからDTXManiaをViewerとして呼び出した場合に、DTXCを終了するタイミングでこの問題が発生する。)
git-svn-id: http://svn.osdn.jp/svnroot/dtxmania/branches/140113(DTXMania098%20with%
2028821%20DTXVmode)@683
16f42ceb-6dc6-49c8-ba94-
f2d53467949d
\r
if ( this.bWAVを使うチャンネルである ) // WAV\r
{\r
- CDTX.CWAV wc = CDTXMania.DTX.listWAV[ this.n整数値・内部番号 ];\r
- nDuration = ( wc.rSound[ 0 ] == null ) ? 0 : wc.rSound[ 0 ].n総演奏時間ms;\r
+ CDTX.CWAV wc;\r
+ CDTXMania.DTX.listWAV.TryGetValue( this.n整数値・内部番号, out wc );\r
+ if ( wc == null )\r
+ {\r
+ nDuration = 0;\r
+ }\r
+ else\r
+ {\r
+ nDuration = ( wc.rSound[ 0 ] == null ) ? 0 : wc.rSound[ 0 ].n総演奏時間ms;\r
+ }\r
}\r
else if ( this.nチャンネル番号 == 0x54 ) // AVI\r
{\r
{\r
// まず全サウンドオフにする\r
CDTXMania.DTX.t全チップの再生停止();\r
+ this.actAVI.Stop();\r
+ this.actBGA.Stop();\r
\r
#region [ 再生開始小節の変更 ]\r
nStartBar++; // +1が必要\r
CDTXMania.ConfigIni.bAutoPlay.BsPick = true;\r
CDTXMania.ConfigIni.bAutoPlay.BsW = true;\r
\r
+ this.bIsAutoPlay = CDTXMania.ConfigIni.bAutoPlay;\r
+\r
CDTXMania.ConfigIni.bAVI有効 = true;\r
CDTXMania.ConfigIni.bBGA有効 = true;\r
for ( int i = 0; i < 3; i++ )\r
private set;\r
}\r
\r
+ public ESoundDeviceType soundDeviceType\r
+ {\r
+ get;\r
+ private set;\r
+ }\r
+ public int nASIOdevice\r
+ {\r
+ get;\r
+ private set;\r
+ }\r
+\r
public string filename\r
{\r
get\r
this.Refreshed = true;\r
ret = true;\r
}\r
+ else if ( arg.StartsWith( "-D", StringComparison.OrdinalIgnoreCase ) )\r
+ {\r
+ // -DW, -DA1など\r
+ arg = arg.Substring( 2 ); // -D を削除\r
+ switch ( arg.Substring( 1 ) )\r
+ {\r
+ case "D":\r
+ this.soundDeviceType = ESoundDeviceType.DirectSound;\r
+ break;\r
+ case "W":\r
+ this.soundDeviceType = ESoundDeviceType.ExclusiveWASAPI;\r
+ break;\r
+ case "A":\r
+ this.soundDeviceType = ESoundDeviceType.ASIO;\r
+ arg = arg.Substring( 1 );\r
+ string s = "";\r
+ while ( arg.Substring( 1 ) == "0" )\r
+ {\r
+ }\r
+ break;\r
+ }\r
+ }\r
else if ( arg.StartsWith( "-N", StringComparison.OrdinalIgnoreCase ) )\r
{\r
this.Enabled = true;\r
}\r
\r
int startIndex = arg.IndexOf( ' ' );\r
- string filename = arg.Substring( startIndex + 1 ); // 再生ファイル名(フルパス)\r
+ string filename = arg.Substring( startIndex + 1 ); // 再生ファイル名(フルパス)\r
try\r
{\r
filename = filename.Trim( new char[] { '\"' } );\r
\r
if ( strMes != null )\r
{\r
-//Debug.WriteLine( "msg arg=" + strMes );\r
+Trace.WriteLine( "msg arg=" + strMes );\r
DTXVmode.ParseArguments( strMes );\r
\r
+\r
+Trace.WriteLine( "NeedReload = " + DTXVmode.NeedReload );\r
if ( DTXVmode.Enabled )\r
{\r
-//Debug.WriteLine( "DTXV mode is enabled," );\r
+Trace.WriteLine( "DTXV mode is enabled," );\r
bコンパクトモード = true;\r
strコンパクトモードファイル = DTXVmode.filename;\r
}\r
case CStage.Eステージ.曲読み込み:\r
#region [ *** ]\r
//-----------------------------\r
+ DTXVmode.Refreshed = false; // 曲のリロード中に発生した再リロードは、無視する。\r
if( this.n進行描画の戻り値 != 0 )\r
{\r
CDTXMania.Pad.st検知したデバイス.Clear(); // 入力デバイスフラグクリア(2010.9.11)\r
}\r
private static bool tDLLの存在チェック( string strDll名, string str存在しないときに表示するエラー文字列jp, string str存在しないときに表示するエラー文字列en )\r
{\r
- return tDLLの存在チェック( strDll名, str存在しないときに表示するエラー文字列jp, str存在しないときに表示するエラー文字列en, false );\r
+ return true;\r
+ //return tDLLの存在チェック( strDll名, str存在しないときに表示するエラー文字列jp, str存在しないときに表示するエラー文字列en, false );\r
}\r
\r
#region [DllImport]\r
string newLine = Environment.NewLine;\r
bool bDLLnotfound = false;\r
\r
+ Trace.WriteLine( "Current Directory: " + Environment.CurrentDirectory );\r
+ Trace.WriteLine( "EXEのあるフォルダ: " + Path.GetDirectoryName( Application.ExecutablePath ) );\r
+\r
#region [DLLの存在チェック]\r
if ( !tDLLの存在チェック( "dll\\SlimDX" + CDTXMania.SLIMDXDLL + ".dll",\r
"SlimDX" + CDTXMania.SLIMDXDLL + ".dll またはその依存するdllが存在しません。" + newLine + "DTXManiaをダウンロードしなおしてください。",\r
{\r
if ( p.Id != current.Id ) // プロセス名は同じでかつ、プロセスIDが自分自身とは異なるものを探す\r
{\r
- if ( p.MainModule.FileName == current.MainModule.FileName )\r
+ if ( p.MainModule.FileName == current.MainModule.FileName && p.MainWindowHandle != IntPtr.Zero )\r
{\r
target = p;\r
break;\r
#region #28821 2014.1.23 yyagi (WM_COPYDATA)\r
else if ( m.Msg == WindowConstants.WM_COPYDATA )\r
{\r
+Trace.WriteLine( "FDK;msg received" );\r
COPYDATASTRUCT cds = (COPYDATASTRUCT) Marshal.PtrToStructure( m.LParam, typeof( COPYDATASTRUCT ) );\r
strMessage = Marshal.PtrToStringUni( cds.lpData );\r
IsReceivedMessage = true;\r
-//Trace.WriteLine( "FDK;msg=" + strMessage + ", len=" + strMessage.Length + ", truelen=" + cds.cbData );\r
+Trace.WriteLine( "FDK;msg=" + strMessage + ", len=" + strMessage.Length + ", truelen=" + cds.cbData );\r
}\r
#endregion\r
#region #23510 2010.11.16 yyagi add: 縦横比固定でのウインドウサイズ変更 from http://d.hatena.ne.jp/iselix/20080917/1221666614 http://hp.vector.co.jp/authors/VA016117/sizing.html\r
}\r
else if( this.bDirectSoundである )\r
{\r
- this.Buffer.Stop();\r
+ try\r
+ {\r
+ this.Buffer.Stop();\r
+ }\r
+ catch ( Exception )\r
+ {\r
+ // WASAPI/ASIOとDirectSoundを同時使用すると、Bufferがlostしてここで例外発生する。→ catchして無視する。\r
+ // DTXCからDTXManiaを呼び出すと、DTXC終了時にこの現象が発生する。\r
+ }\r
}\r
}\r
\r