- make OpenAL and the decoder libraries delay loaded so that ZDoom can still start without them being present.

This required the addition of a few exception handlers so to avoid #ifdef overuse I also added some #defines for non-Windows systems that allow using __try and __except directly in the code without #ifdef'ing them out.
This commit is contained in:
Christoph Oelckers 2015-04-25 12:25:10 +02:00
commit d880783784
8 changed files with 151 additions and 89 deletions

View file

@ -53,6 +53,7 @@ extern HINSTANCE g_hInst;
#include "doomtype.h"
#include <math.h>
#include "except.h"
#include "fmodsound.h"
#include "oalsound.h"
@ -574,22 +575,22 @@ SoundDecoder *SoundRenderer::CreateDecoder(FileReader *reader)
int pos = reader->Tell();
#ifdef HAVE_MPG123
decoder = new MPG123Decoder;
if(decoder->open(reader))
return decoder;
reader->Seek(pos, SEEK_SET);
decoder = new MPG123Decoder;
if (decoder->open(reader))
return decoder;
reader->Seek(pos, SEEK_SET);
delete decoder;
decoder = NULL;
delete decoder;
decoder = NULL;
#endif
#ifdef HAVE_SNDFILE
decoder = new SndFileDecoder;
if(decoder->open(reader))
return decoder;
reader->Seek(pos, SEEK_SET);
decoder = new SndFileDecoder;
if (decoder->open(reader))
return decoder;
reader->Seek(pos, SEEK_SET);
delete decoder;
decoder = NULL;
delete decoder;
decoder = NULL;
#endif
return decoder;
}