Skip to content

Commit

Permalink
#38054 曲別に設定したInputAdjustが適用されない不具合を修正
Browse files Browse the repository at this point in the history
#35379 曲選択画面でのメモリリークらしき箇所をとりあえず塞ぐ(副作用あります...)
  • Loading branch information
kairera0467 committed Jul 30, 2018
1 parent d061c68 commit 0ed3d0b
Show file tree
Hide file tree
Showing 11 changed files with 94 additions and 77 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3755,6 +3755,7 @@ public void t入力( string strファイル名, bool bヘッダのみ, double db
//Trace.TraceInformation( "発声時刻計算: {0}", span.ToString() );
//timeBeginLoad = DateTime.Now;
this.nBGMAdjust = 0;
this.t各自動再生音チップの再生時刻を変更する( nBGMAdjust );
if( CDTXMania.ConfigIni.nCommonBGMAdjustMs != 0 )
this.t各自動再生音チップの再生時刻を変更する( CDTXMania.ConfigIni.nCommonBGMAdjustMs, false, true );
//span = (TimeSpan) ( DateTime.Now - timeBeginLoad );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ public override void OnManagedリソースの作成() // OPTIONと画
this.txMenuパネル = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\4_menu panel.png" ) );
this.txItemBar = CDTXMania.tテクスチャの生成( CSkin.Path( @"Graphics\4_item bar.png" ) );

prvFont = new CPrivateFastFont( new FontFamily( CDTXMania.ConfigIni.str選曲リストフォント ), 18 );
this.prvFont = new CPrivateFastFont( new FontFamily( CDTXMania.ConfigIni.str選曲リストフォント ), 18 );
string[] strMenuItem = { "System", "Drums", "Guitar", "Bass", "Exit" };
txMenuItemLeft = new CTexture[ strMenuItem.Length, 2 ];
for ( int i = 0; i < strMenuItem.Length; i++ )
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -421,7 +421,8 @@ public void Refresh(CSongs管理 cs, bool bRemakeSongTitleBar ) // #26070 2012.
}
this.On非活性化();
this.r現在選択中の曲 = null;
this.On活性化();
if( CDTXMania.r現在のステージ.eステージID == CStage.Eステージ.選曲 )
this.On活性化();
}


Expand Down Expand Up @@ -537,8 +538,8 @@ public override void OnManagedリソースの作成()
this.tx上部パネル = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\5_header song list.png"), false);
this.tx下部パネル = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\5_footer song list.png"), false);

prvFont = new CPrivateFastFont( new FontFamily( CDTXMania.ConfigIni.str選曲リストフォント ), 30, FontStyle.Regular );
prvFontSmall = new CPrivateFastFont( new FontFamily( CDTXMania.ConfigIni.str選曲リストフォント ), 15, FontStyle.Regular );
this.prvFont = new CPrivateFastFont( new FontFamily( CDTXMania.ConfigIni.str選曲リストフォント ), 30, FontStyle.Regular );
this.prvFontSmall = new CPrivateFastFont( new FontFamily( CDTXMania.ConfigIni.str選曲リストフォント ), 15, FontStyle.Regular );

for( int i = 0; i < 13; i++ )
this.t曲名バーの生成( i, this.stバー情報[ i ].strタイトル文字列, this.stバー情報[ i ].col文字色 );
Expand Down Expand Up @@ -621,8 +622,9 @@ public override void OnManagedリソースの解放()
CDTXMania.t安全にDisposeする( ref this.tx選曲バー.Other );
CDTXMania.t安全にDisposeする( ref this.tx上部パネル );
CDTXMania.t安全にDisposeする( ref this.tx下部パネル );
prvFont.Dispose();
prvFontSmall.Dispose();

CDTXMania.t安全にDisposeする( ref this.prvFont );
CDTXMania.t安全にDisposeする( ref this.prvFontSmall );
if( this.tx選択中の曲名テクスチャ != null )
{
this.tx選択中の曲名テクスチャ.Dispose();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -314,11 +314,12 @@ public override void OnManagedリソースの作成()
#region[ 曲名、アーティスト名テクスチャの生成 ]
if ((this.str曲タイトル != null) && (this.str曲タイトル.Length > 0))
{
pfタイトル = new CPrivateFastFont(new FontFamily(CDTXMania.ConfigIni.str選曲リストフォント), 40, FontStyle.Regular);
this.pfタイトル = new CPrivateFastFont(new FontFamily(CDTXMania.ConfigIni.str選曲リストフォント), 40, FontStyle.Regular);
Bitmap bmpSongName = new Bitmap(1, 1);
bmpSongName = pfタイトル.DrawPrivateFont(this.str曲タイトル, CPrivateFont.DrawMode.Edge, Color.Black, Color.Black, this.clGITADORAgradationTopColor, this.clGITADORAgradationBottomColor, true);
bmpSongName = this.pfタイトル.DrawPrivateFont(this.str曲タイトル, CPrivateFont.DrawMode.Edge, Color.Black, Color.Black, this.clGITADORAgradationTopColor, this.clGITADORAgradationBottomColor, true);
this.txタイトル = CDTXMania.tテクスチャの生成(bmpSongName, false);
bmpSongName.Dispose();
CDTXMania.t安全にDisposeする( ref bmpSongName );
CDTXMania.t安全にDisposeする( ref this.pfタイトル );
}
else
{
Expand All @@ -331,7 +332,8 @@ public override void OnManagedリソースの作成()
Bitmap bmpArtistName = new Bitmap(1, 1);
bmpArtistName = pfアーティスト.DrawPrivateFont(this.strアーティスト名, CPrivateFont.DrawMode.Edge, Color.Black, Color.Black, this.clGITADORAgradationTopColor, this.clGITADORAgradationBottomColor, true);
this.txアーティスト = CDTXMania.tテクスチャの生成(bmpArtistName, false);
bmpArtistName.Dispose();
CDTXMania.t安全にDisposeする( ref bmpArtistName );
CDTXMania.t安全にDisposeする( ref this.pfアーティスト );
}
else
{
Expand All @@ -354,6 +356,7 @@ public override void OnManagedリソースの解放()
if( !base.b活性化してない )
{
//テクスチャ11枚
//2018.03.15 kairera0467 PrivateFontが抜けていた&フォント生成直後に解放するようにしてみる
CDTXMania.tテクスチャの解放( ref this.tx背景 );
CDTXMania.tテクスチャの解放( ref this.txジャケット );
CDTXMania.tテクスチャの解放( ref this.txタイトル );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,6 @@ public override void On活性化()
}
public override void On非活性化()
{
CDTXMania.t安全にDisposeする( ref this.pfタイトル );
CDTXMania.t安全にDisposeする( ref this.pfアーティスト );
// CDTXMania.tテクスチャの解放(ref this.txPanel);
this.ct進行用 = null;
base.On非活性化();
Expand Down Expand Up @@ -126,6 +124,8 @@ public override void OnManagedリソースの解放()
CDTXMania.tテクスチャの解放( ref this.txArtistName );
CDTXMania.tテクスチャの解放( ref this.txジャケットパネル );
CDTXMania.tテクスチャの解放( ref this.txジャケット画像 );
CDTXMania.t安全にDisposeする( ref this.pfタイトル );
CDTXMania.t安全にDisposeする( ref this.pfアーティスト );
base.OnManagedリソースの解放();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,13 +71,13 @@ public override void OnManagedリソースの作成()
else
this.strSongName = CDTXMania.DTX.TITLE;

pfタイトル = new CPrivateFastFont(new FontFamily(CDTXMania.ConfigIni.str選曲リストフォント), 20, FontStyle.Regular);
this.pfタイトル = new CPrivateFastFont(new FontFamily(CDTXMania.ConfigIni.str選曲リストフォント), 20, FontStyle.Regular);
Bitmap bmpSongName = new Bitmap(1, 1);
bmpSongName = pfタイトル.DrawPrivateFont(this.strSongName, CPrivateFont.DrawMode.Edge, Color.Black, Color.Black, this.clGITADORAgradationTopColor, this.clGITADORAgradationBottomColor, true);
this.txSongName = CDTXMania.tテクスチャの生成(bmpSongName, false);
bmpSongName.Dispose();

pfアーティスト = new CPrivateFastFont(new FontFamily(CDTXMania.ConfigIni.str選曲リストフォント), 15, FontStyle.Regular);
this.pfアーティスト = new CPrivateFastFont(new FontFamily(CDTXMania.ConfigIni.str選曲リストフォント), 15, FontStyle.Regular);
Bitmap bmpArtistName = new Bitmap(1, 1);
bmpArtistName = pfアーティスト.DrawPrivateFont(CDTXMania.DTX.ARTIST, CPrivateFont.DrawMode.Edge, Color.Black, Color.Black, this.clGITADORAgradationTopColor, this.clGITADORAgradationBottomColor, true);
this.txArtistName = CDTXMania.tテクスチャの生成(bmpArtistName, false);
Expand Down Expand Up @@ -143,6 +143,9 @@ public override void OnManagedリソースの解放()
CDTXMania.tテクスチャの解放(ref this.txSongLevel);
CDTXMania.tテクスチャの解放(ref this.txSongDifficulty);
CDTXMania.tテクスチャの解放(ref this.txDrumSpeed);

CDTXMania.t安全にDisposeする( ref this.pfタイトル );
CDTXMania.t安全にDisposeする( ref this.pfアーティスト );
base.OnManagedリソースの解放();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -411,12 +411,12 @@ public override void OnManagedリソースの作成()
graネームプレート用.DrawImage( bmpCardName, -2f, 26f );
graネームプレート用.DrawImage( bmpTitleName, 6f, 8f );
#endregion
bmpCardName.Dispose();
bmpTitleName.Dispose();
CDTXMania.t安全にDisposeする( ref bmpCardName );
CDTXMania.t安全にDisposeする( ref bmpTitleName );
this.txネームプレート用文字[ i ] = new CTexture( CDTXMania.app.Device, image2, CDTXMania.TextureFormat, false );
CDTXMania.t安全にDisposeする( ref image2 );

graネームプレート用.Dispose();
CDTXMania.t安全にDisposeする( ref graネームプレート用 );
}
this.prv表示用フォント.Dispose();
this.prv称号フォント.Dispose();
Expand Down
128 changes: 68 additions & 60 deletions DTXManiaプロジェクト/コード/全体/CDTXMania.cs
Original file line number Diff line number Diff line change
Expand Up @@ -730,73 +730,77 @@ protected override void Draw(GameTime gameTime)
case CStage.Eステージ.タイトル:
#region [ *** ]
//-----------------------------
switch (this.n進行描画の戻り値)
if( this.n進行描画の戻り値 != 0 )
{
case (int)CStageタイトル.E戻り値.GAMESTART:
#region [ 選曲処理へ ]
//-----------------------------
r現在のステージ.On非活性化();
Trace.TraceInformation("----------------------");
Trace.TraceInformation("■ 選曲");
stage選曲.On活性化();
r直前のステージ = r現在のステージ;
r現在のステージ = stage選曲;
//-----------------------------
switch (this.n進行描画の戻り値)
{
case (int)CStageタイトル.E戻り値.GAMESTART:
#region [ 選曲処理へ ]
//-----------------------------
r現在のステージ.On非活性化();
Trace.TraceInformation("----------------------");
Trace.TraceInformation("■ 選曲");
stage選曲.On活性化();
r直前のステージ = r現在のステージ;
r現在のステージ = stage選曲;
//-----------------------------
#endregion
break;

#region [ OPTION: 廃止済 ]
/*
case 2: // #24525 OPTIONとCONFIGの統合に伴い、OPTIONは廃止
#region [ *** ]
//-----------------------------
r現在のステージ.On非活性化();
Trace.TraceInformation( "----------------------" );
Trace.TraceInformation( "■ オプション" );
stageオプション.On活性化();
r直前のステージ = r現在のステージ;
r現在のステージ = stageオプション;
//-----------------------------
#endregion
break;
*/
#endregion
break;

#region [ OPTION: 廃止済 ]
/*
case 2: // #24525 OPTIONとCONFIGの統合に伴い、OPTIONは廃止
#region [ *** ]
//-----------------------------
r現在のステージ.On非活性化();
Trace.TraceInformation( "----------------------" );
Trace.TraceInformation( "■ オプション" );
stageオプション.On活性化();
r直前のステージ = r現在のステージ;
r現在のステージ = stageオプション;
//-----------------------------
#endregion
break;
*/
#endregion
case (int)CStageタイトル.E戻り値.CONFIG:
#region [ *** ]
//-----------------------------
r現在のステージ.On非活性化();
Trace.TraceInformation("----------------------");
Trace.TraceInformation("■ コンフィグ");
stageコンフィグ.On活性化();
r直前のステージ = r現在のステージ;
r現在のステージ = stageコンフィグ;
//-----------------------------
#endregion
break;

case (int)CStageタイトル.E戻り値.CONFIG:
#region [ *** ]
//-----------------------------
r現在のステージ.On非活性化();
Trace.TraceInformation("----------------------");
Trace.TraceInformation("■ コンフィグ");
stageコンフィグ.On活性化();
r直前のステージ = r現在のステージ;
r現在のステージ = stageコンフィグ;
//-----------------------------
#endregion
break;
case (int)CStageタイトル.E戻り値.EXIT:
#region [ *** ]
//-----------------------------
r現在のステージ.On非活性化();
Trace.TraceInformation("----------------------");
Trace.TraceInformation("■ 終了");
stage終了.On活性化();
r直前のステージ = r現在のステージ;
r現在のステージ = stage終了;
//-----------------------------
#endregion
break;
}

case (int)CStageタイトル.E戻り値.EXIT:
#region [ *** ]
//-----------------------------
r現在のステージ.On非活性化();
Trace.TraceInformation("----------------------");
Trace.TraceInformation("■ 終了");
stage終了.On活性化();
r直前のステージ = r現在のステージ;
r現在のステージ = stage終了;
//-----------------------------
#endregion
break;
}
foreach (STPlugin pg in this.listプラグイン)
{
Directory.SetCurrentDirectory(pg.strプラグインフォルダ);
pg.plugin.Onステージ変更();
Directory.SetCurrentDirectory(CDTXMania.strEXEのあるフォルダ);
}

foreach (STPlugin pg in this.listプラグイン)
{
Directory.SetCurrentDirectory(pg.strプラグインフォルダ);
pg.plugin.Onステージ変更();
Directory.SetCurrentDirectory(CDTXMania.strEXEのあるフォルダ);
this.tガベージコレクションを実行する(); // #31980 2013.9.3 yyagi タイトル画面でだけ、毎フレームGCを実行して重くなっていた問題の修正
}

//this.tガベージコレクションを実行する(); // #31980 2013.9.3 yyagi タイトル画面でだけ、毎フレームGCを実行して重くなっていた問題の修正
//-----------------------------
#endregion
break;
Expand Down Expand Up @@ -1454,6 +1458,7 @@ public static CTexture tテクスチャの生成( string fileName, bool b黒を
}
try
{
Trace.WriteLine("CTextureをFileから生成 + Filename:" + fileName);
return new CTexture( app.Device, fileName, TextureFormat, b黒を透過する );
}
catch ( CTextureCreateFailedException )
Expand All @@ -1469,8 +1474,10 @@ public static CTexture tテクスチャの生成( string fileName, bool b黒を
}
public static void tテクスチャの解放( ref CTexture tx )
{
if( tx != null )
if (tx != null) {
Trace.WriteLine( "CTextureを解放 Size W:" + tx.sz画像サイズ.Width + " H:" + tx.sz画像サイズ.Height );
CDTXMania.t安全にDisposeする( ref tx );
}
}
public static void tテクスチャの解放( ref CTextureAf tx )
{
Expand Down Expand Up @@ -1509,6 +1516,7 @@ public static CTexture tテクスチャの生成( Bitmap bitmap, bool b黒を透
}
try
{
Trace.WriteLine( "CTextureをBitmapから生成" );
return new CTexture( app.Device, bitmap, TextureFormat, b黒を透過する );
}
catch ( CTextureCreateFailedException )
Expand Down
Binary file modified 実行時フォルダ(DTXCreator)/FDK.dll
Binary file not shown.
Binary file modified 実行時フォルダ/DTXManiaGR.exe
Binary file not shown.
Binary file modified 実行時フォルダ/FDK.dll
Binary file not shown.

0 comments on commit 0ed3d0b

Please sign in to comment.