• R/O
  • SSH
  • HTTPS

dtxmaniaxg-verk: 提交


Commit MetaInfo

修訂581 (tree)
時間2020-05-24 14:50:14
作者kairera0467

Log Message

#35379 ジャケット画像の描画でtxTumbnailを使用しないよう変更
#35379 前回の修正で発生した不具合を修正
#35379 ランクEまたはオート演奏した場合、リザルトのランク画像でメモリリークが発生していたのを修正
#xxxxx バージョンの変更
#xxxxx DTXMania rev:2033adeeee1e46267cf36b50919c9ecee8804076の変更を取り込み

Change Summary

差異

--- trunk/DTXManiaプロジェクト/コード/ステージ/02.タイトル/CStageタイトル.cs (revision 580)
+++ trunk/DTXManiaプロジェクト/コード/ステージ/02.タイトル/CStageタイトル.cs (revision 581)
@@ -184,7 +184,7 @@
184184 if( this.tx背景 != null )
185185 this.tx背景.t2D描画( CDTXMania.app.Device, 0, 0 );
186186
187- CDTXMania.act文字コンソール.tPrint( 2, 2, C文字コンソール.Eフォント種別.白, "DTX:J:A:A:2019060800" );
187+ CDTXMania.act文字コンソール.tPrint( 2, 2, C文字コンソール.Eフォント種別.白, "DTX:J:A:A:2020052400" );
188188
189189 if( this.txメニュー != null )
190190 {
--- trunk/DTXManiaプロジェクト/コード/ステージ/05.選曲/CActSelect曲リスト.cs (revision 580)
+++ trunk/DTXManiaプロジェクト/コード/ステージ/05.選曲/CActSelect曲リスト.cs (revision 581)
@@ -308,13 +308,13 @@
308308 //this.t曲名バーの生成( i, this.stバー情報[ i ].strタイトル文字列, this.stバー情報[ i ].col文字色 );
309309 this.tアーティスト名テクスチャの生成( i, this.stバー情報[ i ].strアーティスト名 );
310310 this.tパネルの生成( i, this.stバー情報[ i ].strタイトル文字列, this.stバー情報[ i ].strアーティスト名, this.stバー情報[ i ].col文字色 );
311- if( !this.dicThumbnail.ContainsKey( this.stバー情報[ i ].strPreimageのパス ) )
312- {
313- //txTumbnail = this.tサムネイルテクスチャを作成する( Path.GetDirectoryName( song.ScoreFile ) );
314- this.tパスを指定してサムネイル画像を生成する( i, this.stバー情報[ i ].strPreimageのパス, this.stバー情報[ i ].eバー種別 );
315- this.dicThumbnail.Add( this.stバー情報[ i ].strPreimageのパス, this.txTumbnail[ i ] );
316- }
317- txTumbnail[ i ] = this.dicThumbnail[ this.stバー情報[ i ].strPreimageのパス ];
311+ // if( !this.dicThumbnail.ContainsKey( this.stバー情報[ i ].strPreimageのパス ) )
312+ // {
313+ // //txTumbnail = this.tサムネイルテクスチャを作成する( Path.GetDirectoryName( song.ScoreFile ) );
314+ // this.tパスを指定してサムネイル画像を生成する( i, this.stバー情報[ i ].strPreimageのパス, this.stバー情報[ i ].eバー種別 );
315+ // this.dicThumbnail.Add( this.stバー情報[ i ].strPreimageのパス, this.txTumbnail[ i ] );
316+ //}
317+ // this.txTumbnail[ i ] = this.dicThumbnail[ this.stバー情報[ i ].strPreimageのパス ];
318318 }
319319 }
320320 public void t次に移動()
@@ -646,27 +646,28 @@
646646 int nKeys = this.dicThumbnail.Count;
647647 string[] keys = new string[ nKeys ];
648648 this.dicThumbnail.Keys.CopyTo( keys, 0 );
649- foreach (var key in keys)
650- this.dicThumbnail[ key ] = this.tパスを指定してサムネイル画像を生成して返す( 0, key, this.stバー情報[ 0 ].eバー種別 );;
649+ //foreach (var key in keys)
650+ // this.dicThumbnail[ key ] = this.tパスを指定してサムネイル画像を生成して返す( 0, key, this.stバー情報[ 0 ].eバー種別 );
651651
652- //ここは最初に表示される画像の復元に必要。
653- for (int i = 0; i < 15; i++)
654- {
655- //this.t曲名バーの生成(i, this.stバー情報[i].strタイトル文字列, this.stバー情報[i].col文字色);
656- this.tアーティスト名テクスチャの生成( i, this.stバー情報[ i ].strアーティスト名 );
657- //this.tパネルの生成( i, this.stバー情報[ i ].strタイトル文字列, this.stバー情報[ i ].strアーティスト名, this.stバー情報[ i ].col文字色 );
658- //this.tパスを指定してサムネイル画像を生成する(i, this.stバー情報[i].strDTXフォルダのパス, this.stバー情報[i].eバー種別);
659- if( this.stバー情報[ i ].strPreimageのパス != null )
660- {
661- if( !this.dicThumbnail.ContainsKey( this.stバー情報[ i ].strPreimageのパス ) )
662- {
663- //txTumbnail = this.tサムネイルテクスチャを作成する( Path.GetDirectoryName( song.ScoreFile ) );
664- this.tパスを指定してサムネイル画像を生成する( i, this.stバー情報[ i ].strPreimageのパス, this.stバー情報[ i ].eバー種別 );
665- this.dicThumbnail.Add( this.stバー情報[ i ].strPreimageのパス, this.txTumbnail[ i ] );
666- }
667- txTumbnail[ i ] = this.dicThumbnail[ this.stバー情報[ i ].strPreimageのパス ];
668- }
669- }
652+ // //ここは最初に表示される画像の復元に必要。
653+ // for (int i = 0; i < 15; i++)
654+ // {
655+ // //this.t曲名バーの生成(i, this.stバー情報[i].strタイトル文字列, this.stバー情報[i].col文字色);
656+ // this.tアーティスト名テクスチャの生成( i, this.stバー情報[ i ].strアーティスト名 );
657+ // //this.tパネルの生成( i, this.stバー情報[ i ].strタイトル文字列, this.stバー情報[ i ].strアーティスト名, this.stバー情報[ i ].col文字色 );
658+ // //this.tパスを指定してサムネイル画像を生成する(i, this.stバー情報[i].strDTXフォルダのパス, this.stバー情報[i].eバー種別);
659+ // if( this.stバー情報[ i ].strPreimageのパス != null )
660+ // {
661+ // if( !this.dicThumbnail.ContainsKey( this.stバー情報[ i ].strPreimageのパス ) )
662+ // {
663+ // //txTumbnail = this.tサムネイルテクスチャを作成する( Path.GetDirectoryName( song.ScoreFile ) );
664+ // this.tパスを指定してサムネイル画像を生成する( i, this.stバー情報[ i ].strPreimageのパス, this.stバー情報[ i ].eバー種別 );
665+ // this.dicThumbnail.Add( this.stバー情報[ i ].strPreimageのパス, this.txTumbnail[ i ] );
666+ //}
667+ // //txTumbnail[ i ] = this.dicThumbnail[ this.stバー情報[ i ].strPreimageのパス ];
668+ // txTumbnail[ i ] = this.dicThumbnail[ this.stバー情報[ i ].strPreimageのパス ];
669+ // }
670+ // }
670671 #endregion
671672
672673
@@ -742,6 +743,8 @@
742743 CDTXMania.t安全にDisposeする( ref this.stバー情報[ i ].txアーティスト名 );
743744 CDTXMania.t安全にDisposeする( ref this.stバー情報[ i ].txカスタム曲名テクスチャ );
744745 CDTXMania.t安全にDisposeする( ref this.stバー情報[ i ].txカスタムアーティスト名テクスチャ );
746+
747+ CDTXMania.tテクスチャの解放( ref this.txTumbnail[ i ] );
745748 }
746749
747750 CDTXMania.tテクスチャの解放( ref this.tx選択されている曲の曲名 );
@@ -912,13 +915,22 @@
912915 this.tアーティスト名テクスチャの生成( index, this.stバー情報[ index ].strアーティスト名 );
913916 this.tパネルの生成( index, this.stバー情報[ index ].strタイトル文字列, this.stバー情報[ index ].strアーティスト名, this.stバー情報[ index ].col文字色 );
914917
918+ //Trace.TraceInformation( "パネルを1行上にシフト" );
915919 if( !this.dicThumbnail.ContainsKey( this.stバー情報[ index ].strPreimageのパス ) )
916920 {
917- //txTumbnail = this.tサムネイルテクスチャを作成する( Path.GetDirectoryName( song.ScoreFile ) );
918- this.tパスを指定してサムネイル画像を生成する( index, this.stバー情報[ index ].strPreimageのパス, this.stバー情報[ index ].eバー種別 );
919- this.dicThumbnail.Add( this.stバー情報[ index ].strPreimageのパス, this.txTumbnail[ index ] );
921+ //txTumbnail = this.tサムネイルテクスチャを作成する( Path.GetDirectoryName( song.ScoreFile ) );
922+ //this.tパスを指定してサムネイル画像を生成する( index, this.stバー情報[ index ].strPreimageのパス, this.stバー情報[ index ].eバー種別 );
923+ this.dicThumbnail.Add( this.stバー情報[ index ].strPreimageのパス,
924+ this.tパスを指定してサムネイル画像を生成して返す(index, this.stバー情報[ index ].strPreimageのパス, this.stバー情報[ index ].eバー種別) );
925+ //this.dicThumbnail.Add( this.stバー情報[ index ].strPreimageのパス, this.txTumbnail[ index ] );
920926 }
921- txTumbnail[ index ] = this.dicThumbnail[ this.stバー情報[ index ].strPreimageのパス ];
927+ //else if( this.dicThumbnail[ this.stバー情報[ index ].strPreimageのパス ]?.texture == null )
928+ //{
929+ // Trace.TraceWarning( string.Format( "予期しない解放が発生していたため再生成を行いました。 ({0})", this.stバー情報[ index ].strPreimageのパス ) );
930+ // this.dicThumbnail[ this.stバー情報[ index ].strPreimageのパス ]?.Dispose();
931+ // this.dicThumbnail[ this.stバー情報[ index ].strPreimageのパス ] = CDTXMania.tテクスチャの生成( this.stバー情報[ index ].strPreimageのパス );
932+ //}
933+ //txTumbnail[ index ] = this.dicThumbnail[ this.stバー情報[ index ].strPreimageのパス ];
922934
923935
924936 // stバー情報[] の内容を1行ずつずらす。
@@ -981,13 +993,16 @@
981993 this.tアーティスト名テクスチャの生成( index, this.stバー情報[ index ].strアーティスト名 );
982994 this.tパネルの生成( index, this.stバー情報[ index ].strタイトル文字列, this.stバー情報[ index ].strアーティスト名, this.stバー情報[ index ].col文字色 );
983995
996+ //Trace.TraceInformation( "パネルを1行下にシフト" );
984997 if( !this.dicThumbnail.ContainsKey( this.stバー情報[ index ].strPreimageのパス ) )
985998 {
986999 //txTumbnail = this.tサムネイルテクスチャを作成する( Path.GetDirectoryName( song.ScoreFile ) );
987- this.tパスを指定してサムネイル画像を生成する( index, this.stバー情報[ index ].strPreimageのパス, this.stバー情報[ index ].eバー種別 );
988- this.dicThumbnail.Add( this.stバー情報[ index ].strPreimageのパス, this.txTumbnail[ index ] );
1000+ //this.tパスを指定してサムネイル画像を生成する( index, this.stバー情報[ index ].strPreimageのパス, this.stバー情報[ index ].eバー種別 );
1001+ this.dicThumbnail.Add( this.stバー情報[ index ].strPreimageのパス,
1002+ this.tパスを指定してサムネイル画像を生成して返す(index, this.stバー情報[ index ].strPreimageのパス, this.stバー情報[ index ].eバー種別) );
1003+ //this.dicThumbnail.Add( this.stバー情報[ index ].strPreimageのパス, this.txTumbnail[ index ] );
9891004 }
990- txTumbnail[ index ] = this.dicThumbnail[ this.stバー情報[ index ].strPreimageのパス ];
1005+ //txTumbnail[ index ] = this.dicThumbnail[ this.stバー情報[ index ].strPreimageのパス ];
9911006
9921007
9931008 // stバー情報[] の内容を1行ずつずらす。
@@ -1032,6 +1047,14 @@
10321047 #endregion
10331048 }
10341049
1050+ //if( this.txTumbnail != null )
1051+ //{
1052+ // this.txTumbnail[0]?.t2D描画( CDTXMania.app.Device, 0, 0 );
1053+ //}
1054+ if( this.stバー情報 != null )
1055+ {
1056+ this.stバー情報[0].txパネル?.t2D描画(CDTXMania.app.Device, 0, 0);
1057+ }
10351058
10361059 // 描画。
10371060
@@ -1403,17 +1426,29 @@
14031426 matSongPanel[ i ] *= SlimDX.Matrix.Translation( fX, st3D座標[ i ].y, fZ );
14041427 this.stバー情報[ nパネル番号 ].txパネル.t3D描画( CDTXMania.app.Device, matSongPanel[ i ] );
14051428 }
1406- if (this.txTumbnail[ nパネル番号 ] != null)
1429+ if( this.dicThumbnail[ this.stバー情報[ nパネル番号 ].strPreimageのパス ] != null )
14071430 {
1408- float f拡大率 = (float)172.0 / this.txTumbnail[nパネル番号].szテクスチャサイズ.Width;
1409- float f拡大率2 = (float)172.0 / this.txTumbnail[nパネル番号].szテクスチャサイズ.Height;
1431+ float f拡大率X = (float) 172.0 / this.dicThumbnail[ this.stバー情報[ nパネル番号 ].strPreimageのパス ].szテクスチャサイズ.Width;
1432+ float f拡大率Y = (float) 172.0 / this.dicThumbnail[ this.stバー情報[ nパネル番号 ].strPreimageのパス ].szテクスチャサイズ.Height;
14101433
1411- matJacket[ i ] *= SlimDX.Matrix.Scaling( f拡大率 * CTexture.f画面比率 - 0.084f, f拡大率2 * CTexture.f画面比率 + 0.05f, 1.0f );
1434+
1435+ matJacket[ i ] *= SlimDX.Matrix.Scaling( f拡大率X * CTexture.f画面比率 - 0.084f, f拡大率Y * CTexture.f画面比率 + 0.05f, 1.0f );
14121436 matJacket[ i ] *= SlimDX.Matrix.RotationYawPitchRoll( fR, 0.0f, 0.0f );
14131437 matJacket[ i ] *= SlimDX.Matrix.Translation( fX, st3D座標[ i ].y - 1.5f, fZ );
14141438
1415- this.txTumbnail[ nパネル番号 ].t3D描画(CDTXMania.app.Device, matJacket[ i ] );
1439+ this.dicThumbnail[ this.stバー情報[ nパネル番号 ].strPreimageのパス ].t3D描画(CDTXMania.app.Device, matJacket[ i ] );
14161440 }
1441+ //if (this.txTumbnail[ nパネル番号 ] != null)
1442+ //{
1443+ // float f拡大率 = (float)172.0 / this.txTumbnail[nパネル番号].szテクスチャサイズ.Width;
1444+ // float f拡大率2 = (float)172.0 / this.txTumbnail[nパネル番号].szテクスチャサイズ.Height;
1445+
1446+ // matJacket[ i ] *= SlimDX.Matrix.Scaling( f拡大率 * CTexture.f画面比率 - 0.084f, f拡大率2 * CTexture.f画面比率 + 0.05f, 1.0f );
1447+ // matJacket[ i ] *= SlimDX.Matrix.RotationYawPitchRoll( fR, 0.0f, 0.0f );
1448+ // matJacket[ i ] *= SlimDX.Matrix.Translation( fX, st3D座標[ i ].y - 1.5f, fZ );
1449+
1450+ // this.txTumbnail[ nパネル番号 ].t3D描画(CDTXMania.app.Device, matJacket[ i ] );
1451+ //}
14171452 //-----------------
14181453 #endregion
14191454 }
@@ -1431,17 +1466,29 @@
14311466 matSongPanel[ i ] *= SlimDX.Matrix.Translation( fX, st3D座標[ i ].y, fZ );
14321467 this.stバー情報[ nパネル番号 ].txパネル.t3D描画( CDTXMania.app.Device, matSongPanel[ i ] );
14331468 }
1434- if( this.txTumbnail[ nパネル番号 ] != null )
1469+ if( this.dicThumbnail[ this.stバー情報[ nパネル番号 ].strPreimageのパス ] != null )
14351470 {
1436- float f拡大率 = (float)172.0 / this.txTumbnail[ nパネル番号 ].szテクスチャサイズ.Width ;
1437- float f拡大率2 = (float)172.0 / this.txTumbnail[ nパネル番号 ].szテクスチャサイズ.Height;
1471+ float f拡大率X = (float) 172.0 / this.dicThumbnail[ this.stバー情報[ nパネル番号 ].strPreimageのパス ].szテクスチャサイズ.Width;
1472+ float f拡大率Y = (float) 172.0 / this.dicThumbnail[ this.stバー情報[ nパネル番号 ].strPreimageのパス ].szテクスチャサイズ.Height;
14381473
1439- matJacket[ i ] *= SlimDX.Matrix.Scaling( f拡大率 * CTexture.f画面比率 - 0.084f, f拡大率2 * CTexture.f画面比率 + 0.05f, 1.0f );
1474+
1475+ matJacket[ i ] *= SlimDX.Matrix.Scaling( f拡大率X * CTexture.f画面比率 - 0.084f, f拡大率Y * CTexture.f画面比率 + 0.05f, 1.0f );
14401476 matJacket[ i ] *= SlimDX.Matrix.RotationYawPitchRoll( st3D座標[ i ].rotY, 0.0f, 0.0f );
14411477 matJacket[ i ] *= SlimDX.Matrix.Translation( fX, st3D座標[ i ].y - 1.5f, fZ );
14421478
1443- this.txTumbnail[ nパネル番号 ].t3D描画( CDTXMania.app.Device, matJacket[ i ] );
1479+ this.dicThumbnail[ this.stバー情報[ nパネル番号 ].strPreimageのパス ].t3D描画(CDTXMania.app.Device, matJacket[ i ] );
14441480 }
1481+ //if( this.txTumbnail[ nパネル番号 ] != null )
1482+ //{
1483+ // float f拡大率 = (float)172.0 / this.txTumbnail[ nパネル番号 ].szテクスチャサイズ.Width ;
1484+ // float f拡大率2 = (float)172.0 / this.txTumbnail[ nパネル番号 ].szテクスチャサイズ.Height;
1485+
1486+ // matJacket[ i ] *= SlimDX.Matrix.Scaling( f拡大率 * CTexture.f画面比率 - 0.084f, f拡大率2 * CTexture.f画面比率 + 0.05f, 1.0f );
1487+ // matJacket[ i ] *= SlimDX.Matrix.RotationYawPitchRoll( );
1488+ // matJacket[ i ] *= SlimDX.Matrix.Translation( fX, st3D座標[ i ].y - 1.5f, fZ );
1489+
1490+ // this.txTumbnail[ nパネル番号 ].t3D描画( CDTXMania.app.Device, matJacket[ i ] );
1491+ //}
14451492 //-----------------
14461493 #endregion
14471494 }
@@ -1468,14 +1515,23 @@
14681515 }
14691516 #endregion
14701517 #region[ ジャケット画像 ]
1471- if ( this.txTumbnail[ n選択曲のパネル番号 ] != null )
1518+ if( this.dicThumbnail[ this.stバー情報[ n選択曲のパネル番号 ].strPreimageのパス ] != null )
14721519 {
1473- float f拡大率 = (float)218.0 / this.txTumbnail[ n選択曲のパネル番号 ].szテクスチャサイズ.Width;
1474- float f拡大率2 = (float)218.0 / this.txTumbnail[ n選択曲のパネル番号 ].szテクスチャサイズ.Height;
1475- this.txTumbnail[ n選択曲のパネル番号 ].vc拡大縮小倍率 = new Vector3( f拡大率, f拡大率2, 1.0f );
1476- this.txTumbnail[ n選択曲のパネル番号 ].t2D描画(CDTXMania.app.Device, 537, 249 );
1477- this.txTumbnail[ n選択曲のパネル番号 ].vc拡大縮小倍率 = new Vector3( 1.0f, 1.0f, 1.0f );
1520+ float f拡大率X = (float) 218.0 / this.dicThumbnail[ this.stバー情報[n選択曲のパネル番号].strPreimageのパス ].szテクスチャサイズ.Width;
1521+ float f拡大率Y = (float) 218.0 / this.dicThumbnail[ this.stバー情報[n選択曲のパネル番号].strPreimageのパス ].szテクスチャサイズ.Height;
1522+
1523+ this.dicThumbnail[ this.stバー情報[n選択曲のパネル番号].strPreimageのパス ].vc拡大縮小倍率 = new Vector3( f拡大率X, f拡大率Y, 1.0f );
1524+ this.dicThumbnail[ this.stバー情報[n選択曲のパネル番号].strPreimageのパス ].t2D描画(CDTXMania.app.Device, 537, 249 );
1525+ this.dicThumbnail[ this.stバー情報[n選択曲のパネル番号].strPreimageのパス ].vc拡大縮小倍率 = new Vector3( 1.0f, 1.0f, 1.0f );
14781526 }
1527+ //if ( this.txTumbnail[ n選択曲のパネル番号 ] != null )
1528+ //{
1529+ // float f拡大率 = (float)218.0 / this.txTumbnail[ n選択曲のパネル番号 ].szテクスチャサイズ.Width;
1530+ // float f拡大率2 = (float)218.0 / this.txTumbnail[ n選択曲のパネル番号 ].szテクスチャサイズ.Height;
1531+ // this.txTumbnail[ n選択曲のパネル番号 ].vc拡大縮小倍率 = new Vector3( f拡大率, f拡大率2, 1.0f );
1532+ // this.txTumbnail[ n選択曲のパネル番号 ].t2D描画(CDTXMania.app.Device, 537, 249 );
1533+ // this.txTumbnail[ n選択曲のパネル番号 ].vc拡大縮小倍率 = new Vector3( 1.0f, 1.0f, 1.0f );
1534+ //}
14791535 #endregion
14801536 #region[ タイトル・アーティスト名 ]
14811537 //曲名テクスチャ 生成
@@ -1831,6 +1887,8 @@
18311887 if( song == null )
18321888 return;
18331889
1890+ //Trace.TraceInformation("バーの初期化処理開始");
1891+
18341892 for( int i = 0; i < 7; i++ )
18351893 song = this.r前の曲( song );
18361894
@@ -1855,7 +1913,7 @@
18551913
18561914 // 2019.4.26 kairera0467 バーの初期化は複数回行われる場合があるので、再構築する時には一度解放してから構築するほうが解放漏れは少なくなるはず。
18571915 CDTXMania.tテクスチャの解放( ref this.stバー情報[ i ].txパネル );
1858- CDTXMania.tテクスチャの解放( ref this.txTumbnail[ i ] );
1916+ // CDTXMania.tテクスチャの解放( ref this.txTumbnail[ i ] );
18591917
18601918 this.tパネルの生成( i, song.strタイトル, this.stバー情報[ i ].strアーティスト名, song.col文字色 );
18611919 if( this.stバー情報[ i ].strPreimageのパス != null )
@@ -1863,10 +1921,18 @@
18631921 if( !this.dicThumbnail.ContainsKey( this.stバー情報[ i ].strPreimageのパス ) )
18641922 {
18651923 //txTumbnail = this.tサムネイルテクスチャを作成する( Path.GetDirectoryName( song.ScoreFile ) );
1866- this.tパスを指定してサムネイル画像を生成する( i, this.stバー情報[ i ].strPreimageのパス, this.stバー情報[ i ].eバー種別 );
1867- this.dicThumbnail.Add( this.stバー情報[ i ].strPreimageのパス, this.txTumbnail[ i ] );
1924+ //this.tパスを指定してサムネイル画像を生成する( i, this.stバー情報[ i ].strPreimageのパス, this.stバー情報[ i ].eバー種別 );
1925+
1926+ this.dicThumbnail.Add( this.stバー情報[ i ].strPreimageのパス,
1927+ this.tパスを指定してサムネイル画像を生成して返す(i, this.stバー情報[ i ].strPreimageのパス, this.stバー情報[ i ].eバー種別) );
18681928 }
1869- txTumbnail[ i ] = this.dicThumbnail[ this.stバー情報[ i ].strPreimageのパス ];
1929+ //else if( this.dicThumbnail[ this.stバー情報[ i ].strPreimageのパス ]?.texture == null )
1930+ //{
1931+ // // キーは存在するがテクスチャがnullの場合は再生成のみ行う
1932+ // Trace.TraceInformation(string.Format("キーがあるけどnullになってるCTextureのテクスチャ再生成 {0}", this.stバー情報[ i ].strPreimageのパス));
1933+ // this.dicThumbnail[ this.stバー情報[ i ].strPreimageのパス ] = CDTXMania.tテクスチャの生成( this.stバー情報[ i ].strPreimageのパス );
1934+ //}
1935+ //txTumbnail[ i ] = this.dicThumbnail[ this.stバー情報[ i ].strPreimageのパス ];
18701936 }
18711937
18721938 for( int j = 0; j < 3; j++ )
@@ -1875,6 +1941,8 @@
18751941 song = this.r次の曲( song );
18761942 }
18771943
1944+ //Trace.TraceInformation("バーの初期化処理終了");
1945+
18781946 this.n現在の選択行 = 7;
18791947 }
18801948 private void tパスを指定してサムネイル画像を生成する( int nバー番号, string strDTXPath, Eバー種別 eType )
@@ -1924,20 +1992,34 @@
19241992 private CTexture tパスを指定してサムネイル画像を生成して返す( int nバー番号, string strDTXPath, Eバー種別 eType )
19251993 {
19261994 if (nバー番号 < 0 || nバー番号 > 15)
1927- return this.txTumbnail[nバー番号] = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\5_preimage default.png"), false);
1995+ return CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\5_preimage default.png"), false);
19281996
1997+ // 2020.5.23 kairera0467 memo
1998+ // ここではtxTumbnailに生成結果を格納すると同時に、returnしたCTextureをdicTumbnailに格納している...
1999+ // はずだが、nバー番号が0で固定されているため、本当は無駄が発生しているかもしれない。
2000+
19292001 //try
19302002 {
19312003 //if (eType == Eバー種別.Score || eType == Eバー種別.Box)
19322004 {
2005+ // 一度txTumbnailへの格納をやめてみる。
19332006 if (!File.Exists(strDTXPath))
19342007 {
1935- return this.txTumbnail[nバー番号] = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\5_preimage default.png"), false);
2008+ return CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\5_preimage default.png"), "FILE NOT EXISTS:" + strDTXPath);
19362009 }
19372010 else
19382011 {
1939- return this.txTumbnail[nバー番号] = CDTXMania.tテクスチャの生成(strDTXPath);
2012+ return CDTXMania.tテクスチャの生成(strDTXPath, "PRE:" + strDTXPath);
19402013 }
2014+
2015+ //if (!File.Exists(strDTXPath))
2016+ //{
2017+ // return this.txTumbnail[nバー番号] = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\5_preimage default.png"), "FILE NOT EXISTS:" + strDTXPath);
2018+ //}
2019+ //else
2020+ //{
2021+ // return this.txTumbnail[nバー番号] = CDTXMania.tテクスチャの生成(strDTXPath, "PRE:" + strDTXPath);
2022+ //}
19412023 }
19422024 //else if (eType == Eバー種別.Random)
19432025 {
@@ -1964,6 +2046,12 @@
19642046 }
19652047 */
19662048 }
2049+ public void tTumbDictionaryClear()
2050+ {
2051+ // デバッグ用
2052+ // dicThumbnailに登録されたものを全部消去
2053+ this.dicThumbnail.Clear();
2054+ }
19672055 private CTexture t指定された文字テクスチャを生成する( string str文字, Color color )
19682056 {
19692057 //2013.09.05.kairera0467 中央にしか使用することはないので、色は黒固定。
--- trunk/DTXManiaプロジェクト/コード/ステージ/05.選曲/CStage選曲.cs (revision 580)
+++ trunk/DTXManiaプロジェクト/コード/ステージ/05.選曲/CStage選曲.cs (revision 581)
@@ -679,20 +679,23 @@
679679 #endregion
680680 }
681681 #region[ debug ]
682- if( false )
682+ //if( false )
683683 {
684- if( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.F6 ) )
685- {
686- CDTXMania.ConfigIni.eAutoGhost.Drums = EAutoGhostData.LAST_PLAY;
687- }
688- if( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.F7 ) )
689- {
690- CDTXMania.ConfigIni.eAutoGhost.Drums = EAutoGhostData.PERFECT;
691- }
692- if( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.F8 ) )
693- {
694- CDTXMania.ConfigIni.eAutoGhost.Drums = EAutoGhostData.HI_SKILL;
695- }
684+ //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.F6 ) )
685+ //{
686+ // Debug.WriteLine("曲バーの強制再構成を開始");
687+ // this.act曲リスト.t現在選択中の曲を元に曲バーを再構成する();
688+ // Debug.WriteLine("曲バーの強制再構成を終了");
689+ // }
690+ //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.F7 ) )
691+ //{
692+ // Debug.WriteLine("dicTumbnailの全件クリア");
693+ // this.act曲リスト.tTumbDictionaryClear();
694+ //}
695+ //if( CDTXMania.Input管理.Keyboard.bキーが押された( (int) SlimDX.DirectInput.Key.F8 ) )
696+ //{
697+ // CDTXMania.ConfigIni.eAutoGhost.Drums = EAutoGhostData.HI_SKILL;
698+ //}
696699 }
697700 #endregion
698701 }
--- trunk/DTXManiaプロジェクト/コード/ステージ/08.結果/CActResultRank.cs (revision 580)
+++ trunk/DTXManiaプロジェクト/コード/ステージ/08.結果/CActResultRank.cs (revision 581)
@@ -150,9 +150,10 @@
150150
151151 case 6:
152152 case 99: // #23534 2010.10.28 yyagi: 演奏チップが0個のときは、rankEと見なす
153- this.txランク文字[j] = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\8_rankE.png"));
154153 if (this.b全オート[j])
155154 this.txランク文字[j] = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\8_rankSS.png"));
155+ else // 2020.5.20 kairera0467 解放漏れ修正
156+ this.txランク文字[j] = CDTXMania.tテクスチャの生成(CSkin.Path(@"Graphics\8_rankE.png"));
156157 break;
157158
158159 default:
--- trunk/DTXManiaプロジェクト/コード/全体/CDTXMania.cs (revision 580)
+++ trunk/DTXManiaプロジェクト/コード/全体/CDTXMania.cs (revision 581)
@@ -23,7 +23,7 @@
2323 {
2424 // プロパティ
2525
26- public static readonly string VERSION = "Ver3.62aRC2(1906--)";
26+ public static readonly string VERSION = "Ver3.62aRC3(200524)";
2727 public static readonly string SLIMDXDLL = "c_net20x86_Jun2010";
2828 public static readonly string D3DXDLL = "d3dx9_43.dll"; // June 2010
2929 //public static readonly string D3DXDLL = "d3dx9_42.dll"; // February 2010
@@ -1596,10 +1596,18 @@
15961596 //-----------------
15971597 public static CTexture tテクスチャの生成( string fileName )
15981598 {
1599- return tテクスチャの生成( fileName, false );
1599+ return tテクスチャの生成( fileName, "" );
16001600 }
1601+ public static CTexture tテクスチャの生成( string fileName, string _label )
1602+ {
1603+ return tテクスチャの生成( fileName, false, _label );
1604+ }
16011605 public static CTexture tテクスチャの生成( string fileName, bool b黒を透過する )
16021606 {
1607+ return tテクスチャの生成( fileName, false, "" );
1608+ }
1609+ public static CTexture tテクスチャの生成( string fileName, bool b黒を透過する, string _label )
1610+ {
16031611 if ( app == null )
16041612 {
16051613 return null;
@@ -1606,7 +1614,7 @@
16061614 }
16071615 try
16081616 {
1609- return new CTexture( app.Device, fileName, TextureFormat, b黒を透過する );
1617+ return new CTexture( app.Device, fileName, TextureFormat, b黒を透過する, _label );
16101618 }
16111619 catch ( CTextureCreateFailedException )
16121620 {
--- trunk/FDK17プロジェクト/コード/04.グラフィック/CTexture.cs (revision 580)
+++ trunk/FDK17プロジェクト/コード/04.グラフィック/CTexture.cs (revision 581)
@@ -67,6 +67,7 @@
6767 }
6868 public Vector3 vc拡大縮小倍率;
6969 public string filename;
70+ public string label; // DTXMania rev:2033adeeee1e46267cf36b50919c9ecee8804076
7071
7172 // 画面が変わるたび以下のプロパティを設定し治すこと。
7273
@@ -93,6 +94,7 @@
9394 this.fZ軸中心回転 = 0f;
9495 this.vc拡大縮小倍率 = new Vector3( 1f, 1f, 1f );
9596 this.filename = ""; // DTXMania rev:693bf14b0d83efc770235c788117190d08a4e531
97+ this.label = ""; // DTXMania rev:2033adeeee1e46267cf36b50919c9ecee8804076
9698 // this._txData = null;
9799 }
98100
@@ -107,12 +109,13 @@
107109 /// <param name="bitmap">作成元のビットマップ。</param>
108110 /// <param name="format">テクスチャのフォーマット。</param>
109111 /// <exception cref="CTextureCreateFailedException">テクスチャの作成に失敗しました。</exception>
110- public CTexture( Device device, Bitmap bitmap, Format format )
112+ public CTexture( Device device, Bitmap bitmap, Format format, string _label = "" )
111113 : this()
112114 {
113115 try
114116 {
115117 this.Format = format;
118+ this.label = _label;
116119 this.sz画像サイズ = new Size( bitmap.Width, bitmap.Height );
117120 this.szテクスチャサイズ = this.t指定されたサイズを超えない最適なテクスチャサイズを返す( device, this.sz画像サイズ );
118121 this.rc全画像 = new Rectangle( 0, 0, this.sz画像サイズ.Width, this.sz画像サイズ.Height );
@@ -146,8 +149,8 @@
146149 /// <param name="n高さ">テクスチャの高さ(希望値)。</param>
147150 /// <param name="format">テクスチャのフォーマット。</param>
148151 /// <exception cref="CTextureCreateFailedException">テクスチャの作成に失敗しました。</exception>
149- public CTexture( Device device, int n幅, int n高さ, Format format )
150- : this( device, n幅, n高さ, format, Pool.Managed )
152+ public CTexture( Device device, int n幅, int n高さ, Format format, string _label = "" )
153+ : this( device, n幅, n高さ, format, Pool.Managed, _label )
151154 {
152155 }
153156
@@ -160,16 +163,16 @@
160163 /// <param name="format">テクスチャのフォーマット。</param>
161164 /// <param name="b黒を透過する">画像の黒(0xFFFFFFFF)を透過させるなら true。</param>
162165 /// <exception cref="CTextureCreateFailedException">テクスチャの作成に失敗しました。</exception>
163- public CTexture( Device device, string strファイル名, Format format, bool b黒を透過する )
164- : this( device, strファイル名, format, b黒を透過する, Pool.Managed )
166+ public CTexture( Device device, string strファイル名, Format format, bool b黒を透過する, string _label = "" )
167+ : this( device, strファイル名, format, b黒を透過する, Pool.Managed, _label )
165168 {
166169 }
167- public CTexture( Device device, byte[] txData, Format format, bool b黒を透過する )
168- : this( device, txData, format, b黒を透過する, Pool.Managed )
170+ public CTexture( Device device, byte[] txData, Format format, bool b黒を透過する, string _label = "" )
171+ : this( device, txData, format, b黒を透過する, Pool.Managed, _label )
169172 {
170173 }
171- public CTexture( Device device, Bitmap bitmap, Format format, bool b黒を透過する )
172- : this( device, bitmap, format, b黒を透過する, Pool.Managed )
174+ public CTexture( Device device, Bitmap bitmap, Format format, bool b黒を透過する, string _label = "" )
175+ : this( device, bitmap, format, b黒を透過する, Pool.Managed, _label )
173176 {
174177 }
175178
@@ -187,17 +190,18 @@
187190 /// <param name="format">テクスチャのフォーマット。</param>
188191 /// <param name="pool">テクスチャの管理方法。</param>
189192 /// <exception cref="CTextureCreateFailedException">テクスチャの作成に失敗しました。</exception>
190- public CTexture( Device device, int n幅, int n高さ, Format format, Pool pool )
191- : this( device, n幅, n高さ, format, pool, Usage.None )
193+ public CTexture( Device device, int n幅, int n高さ, Format format, Pool pool, string _label = "" )
194+ : this( device, n幅, n高さ, format, pool, Usage.None, _label )
192195 {
193196 }
194197
195- public CTexture( Device device, int n幅, int n高さ, Format format, Pool pool, Usage usage )
198+ public CTexture( Device device, int n幅, int n高さ, Format format, Pool pool, Usage usage, string _label = "" )
196199 : this()
197200 {
198201 try
199202 {
200203 this.Format = format;
204+ this.label = _label;
201205 this.sz画像サイズ = new Size( n幅, n高さ );
202206 this.szテクスチャサイズ = this.t指定されたサイズを超えない最適なテクスチャサイズを返す( device, this.sz画像サイズ );
203207 this.rc全画像 = new Rectangle( 0, 0, this.sz画像サイズ.Width, this.sz画像サイズ.Height );
@@ -241,12 +245,12 @@
241245 /// <param name="b黒を透過する">画像の黒(0xFFFFFFFF)を透過させるなら true。</param>
242246 /// <param name="pool">テクスチャの管理方法。</param>
243247 /// <exception cref="CTextureCreateFailedException">テクスチャの作成に失敗しました。</exception>
244- public CTexture( Device device, string strファイル名, Format format, bool b黒を透過する, Pool pool )
248+ public CTexture( Device device, string strファイル名, Format format, bool b黒を透過する, Pool pool, string _label = "" )
245249 : this()
246250 {
247- MakeTexture( device, strファイル名, format, b黒を透過する, pool );
251+ MakeTexture( device, strファイル名, format, b黒を透過する, pool, _label );
248252 }
249- public void MakeTexture( Device device, string strファイル名, Format format, bool b黒を透過する, Pool pool )
253+ public void MakeTexture( Device device, string strファイル名, Format format, bool b黒を透過する, Pool pool, string _label = "" )
250254 {
251255 if ( !File.Exists( strファイル名 ) ) // #27122 2012.1.13 from: ImageInformation では FileNotFound 例外は返ってこないので、ここで自分でチェックする。わかりやすいログのために。
252256 throw new FileNotFoundException( string.Format( "ファイルが存在しません。\n[{0}]", strファイル名 ) );
@@ -253,20 +257,21 @@
253257
254258 Byte[] _txData = File.ReadAllBytes( strファイル名 );
255259 this.filename = Path.GetFileName( strファイル名 );
256- MakeTexture( device, _txData, format, b黒を透過する, pool );
260+ MakeTexture( device, _txData, format, b黒を透過する, pool, _label );
257261 }
258262
259- public CTexture( Device device, byte[] txData, Format format, bool b黒を透過する, Pool pool )
263+ public CTexture( Device device, byte[] txData, Format format, bool b黒を透過する, Pool pool, string _label = "" )
260264 : this()
261265 {
262- MakeTexture( device, txData, format, b黒を透過する, pool );
266+ MakeTexture( device, txData, format, b黒を透過する, pool, _label );
263267 }
264- public void MakeTexture( Device device, byte[] txData, Format format, bool b黒を透過する, Pool pool )
268+ public void MakeTexture( Device device, byte[] txData, Format format, bool b黒を透過する, Pool pool, string _label = "" )
265269 {
266270 try
267271 {
268272 var information = ImageInformation.FromMemory( txData );
269273 this.Format = format;
274+ this.label = _label;
270275 this.sz画像サイズ = new Size( information.Width, information.Height );
271276 this.rc全画像 = new Rectangle( 0, 0, this.sz画像サイズ.Width, this.sz画像サイズ.Height );
272277 int colorKey = ( b黒を透過する ) ? unchecked( (int) 0xFF000000 ) : 0;
@@ -290,16 +295,17 @@
290295 }
291296 }
292297
293- public CTexture( Device device, Bitmap bitmap, Format format, bool b黒を透過する, Pool pool )
298+ public CTexture( Device device, Bitmap bitmap, Format format, bool b黒を透過する, Pool pool, string _label = "" )
294299 : this()
295300 {
296- MakeTexture( device, bitmap, format, b黒を透過する, pool );
301+ MakeTexture( device, bitmap, format, b黒を透過する, pool, _label );
297302 }
298- public void MakeTexture( Device device, Bitmap bitmap, Format format, bool b黒を透過する, Pool pool )
303+ public void MakeTexture( Device device, Bitmap bitmap, Format format, bool b黒を透過する, Pool pool, string _label = "" )
299304 {
300305 try
301306 {
302307 this.Format = format;
308+ this.label = _label;
303309 this.sz画像サイズ = new Size( bitmap.Width, bitmap.Height );
304310 this.rc全画像 = new Rectangle( 0, 0, this.sz画像サイズ.Width, this.sz画像サイズ.Height );
305311 int colorKey = ( b黒を透過する ) ? unchecked( (int) 0xFF000000 ) : 0;
@@ -777,7 +783,7 @@
777783 // CTextureのDispose漏れと見做して警告をログ出力する
778784 if (!this.bSlimDXTextureDispose完了済み)
779785 {
780- Trace.TraceWarning("CTexture: Dispose漏れを検出しました。(Size=({0}, {1}), filename={2})", sz画像サイズ.Width, sz画像サイズ.Height, filename );
786+ Trace.TraceWarning("CTexture: Dispose漏れを検出しました。(Size=({0}, {1}), filename={2}, label={3})", sz画像サイズ.Width, sz画像サイズ.Height, filename, label );
781787 }
782788 this.Dispose(false);
783789 }
Show on old repository browser