mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r25268) -Codechange: [Win32] Simplify resource deallocation in case initializing the DirectMusic driver fails.
This commit is contained in:
parent
ed858c08ca
commit
a959f0c23e
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue