fix crash on ALSA SW fallback

This commit is contained in:
Glenn Maynard
2003-11-04 06:40:17 +00:00
parent e14227c0d4
commit 62e9a16bc6
3 changed files with 14 additions and 6 deletions
+3 -4
View File
@@ -43,15 +43,14 @@ CString LoadALSA()
return "";
error:
UnloadALSA();
if( Handle )
dlclose( Handle );
Handle = NULL;
return error;
}
void UnloadALSA()
{
dlclose( Handle );
if( Handle )
dlclose( Handle );
Handle = NULL;
#define FUNC(ret, name, proto) d##name = NULL;
#include "ALSA9Functions.h"
#undef FUNC
@@ -214,7 +214,7 @@ RageSound_ALSA9::RageSound_ALSA9()
CString err = LoadALSA();
if( err != "" )
RageException::ThrowNonfatal("Driver unusable: %s", err.c_str());
try {
shutdown = false;
/* Create a bunch of streams and put them into the stream pool. */
@@ -249,6 +249,10 @@ RageSound_ALSA9::RageSound_ALSA9()
MixingThread.SetName( "RageSound_ALSA9" );
MixingThread.Create( MixerThread_start, this );
} catch(...) {
UnloadALSA();
throw;
}
}
RageSound_ALSA9::~RageSound_ALSA9()
@@ -183,7 +183,7 @@ RageSound_ALSA9_Software::RageSound_ALSA9_Software()
CString err = LoadALSA();
if( err != "" )
RageException::ThrowNonfatal("Driver unusable: %s", err.c_str());
try {
shutdown = false;
max_writeahead = safe_writeahead;
@@ -198,6 +198,11 @@ RageSound_ALSA9_Software::RageSound_ALSA9_Software()
MixingThread.SetName( "RageSound_ALSA9_Software" );
MixingThread.Create( MixerThread_start, this );
} catch(...) {
UnloadALSA();
throw;
}
}
RageSound_ALSA9_Software::~RageSound_ALSA9_Software()