連即してムービー再生を行うデジタルサイネージ的なアプリを作成しているのですが、動画を再生終了する毎にメモリが数MBずつ増えています。
PlayMovieToGraph()のサンプルで試したのですが、やはり同様の動作をしています。これはDxlib内でメモリリークしているのでしょうか?
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int MovieGraphHandle ;
int i = 0;
char Name[4][256] = {"video1.avi",
"video2.avi",
"video3.avi",
"video4.avi"};
if( DxLib_Init() == -1 ) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
for(i = 0; i < 4; i++){
// ムービーファイルをロードします。
MovieGraphHandle = LoadGraph( Name[i] ) ;
// ムービーの再生位置を5秒目に変更します
SeekMovieToGraph( MovieGraphHandle , 5000 ) ;
// ムービーを再生状態にします
PlayMovieToGraph( MovieGraphHandle ) ;
// ループ、GetMovieStateToGraph 関数はムービーの再生状態を得る関数です
// 戻り値が1の間は再生状態ですのでループを続けます
while( ProcessMessage() == 0 && GetMovieStateToGraph( MovieGraphHandle ) == 1 )
{
// ムービー映像を画面いっぱいに描画します
DrawExtendGraph( 0 , 0 , 640 , 480 , MovieGraphHandle , FALSE ) ;
// ウエイトをかけます、あまり速く描画すると画面がちらつくからです
WaitTimer( 17 ) ;
}
if(MovieGraphHandle != -1){
PauseMovieToGraph(MovieGraphHandle);
DeleteGraph(MovieGraphHandle);
}
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}