mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-16 00:12:51 +00:00
(svn r25268) -Codechange: [Win32] Simplify resource deallocation in case initializing the DirectMusic driver fails.
This commit is contained in:
parent
5eb7ec17b7
commit
4afea75116
@ -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
Block a user