From a959f0c23e49afe47ad542fb01252bb3a6c58c4b Mon Sep 17 00:00:00 2001 From: michi_cc Date: Mon, 20 May 2013 13:35:38 +0000 Subject: (svn r25268) -Codechange: [Win32] Simplify resource deallocation in case initializing the DirectMusic driver fails. --- src/music/dmusic.cpp | 18 ++++++------------ src/music/dmusic.h | 2 ++ 2 files changed, 8 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/music/dmusic.cpp b/src/music/dmusic.cpp index cb255e7c0..152bbb249 100644 --- a/src/music/dmusic.cpp +++ b/src/music/dmusic.cpp @@ -82,24 +82,16 @@ const char *MusicDriver_DMusic::Start(const char * const *parm) IID_IDirectMusicPerformance, (LPVOID*)&performance ))) { - proc.CoUninitialize(); return "Failed to create the performance object"; } /* initialize it */ if (FAILED(performance->Init(NULL, NULL, NULL))) { - performance->Release(); - performance = NULL; - proc.CoUninitialize(); return "Failed to initialize performance object"; } /* choose default Windows synth */ if (FAILED(performance->AddPort(NULL))) { - performance->CloseDown(); - performance->Release(); - performance = NULL; - proc.CoUninitialize(); return "AddPort failed"; } @@ -111,10 +103,6 @@ const char *MusicDriver_DMusic::Start(const char * const *parm) IID_IDirectMusicLoader, (LPVOID*)&loader ))) { - performance->CloseDown(); - performance->Release(); - performance = NULL; - proc.CoUninitialize(); return "Failed to create loader object"; } @@ -122,6 +110,12 @@ const char *MusicDriver_DMusic::Start(const char * const *parm) } +MusicDriver_DMusic::~MusicDriver_DMusic() +{ + this->Stop(); +} + + void MusicDriver_DMusic::Stop() { seeking = false; diff --git a/src/music/dmusic.h b/src/music/dmusic.h index b3fc99610..29eee8ed0 100644 --- a/src/music/dmusic.h +++ b/src/music/dmusic.h @@ -17,6 +17,8 @@ /** Music player making use of DirectX. */ class MusicDriver_DMusic: public MusicDriver { public: + virtual ~MusicDriver_DMusic(); + /* virtual */ const char *Start(const char * const *param); /* virtual */ void Stop(); -- cgit v1.2.3-70-g09d2