#include "quakedef.h"
+#include "snd_main.h"
#include "snd_ogg.h"
#include "snd_wav.h"
{NULL, NULL}
};
-// Handle for the Vorbisfile DLL
+// Handles for the Vorbis and Vorbisfile DLLs
+static dllhandle_t vo_dll = NULL;
static dllhandle_t vf_dll = NULL;
typedef struct
*/
qboolean OGG_OpenLibrary (void)
{
- const char* dllname;
+ const char *dllname_vo, *dllname_vf;
// Already loaded?
if (vf_dll)
return true;
+// COMMANDLINEOPTION: Sound: -novorbis disables ogg vorbis sound support
+ if (COM_CheckParm("-novorbis"))
+ return false;
+
#ifdef WIN32
- dllname = "vorbisfile.dll";
+ dllname_vo = "vorbis.dll";
+ dllname_vf = "vorbisfile.dll";
+#elif defined(MACOSX)
+ dllname_vo = "libvorbis.dylib";
+ dllname_vf = "libvorbisfile.dylib";
#else
- dllname = "libvorbisfile.so";
+ dllname_vo = "libvorbis.so";
+ dllname_vf = "libvorbisfile.so";
#endif
- // Load the DLL
- if (! Sys_LoadLibrary (dllname, &vf_dll, oggvorbisfuncs))
+ // Load the DLLs
+ // We need to load both by hand because some OSes seem to not load
+ // the vorbis DLL automatically when loading the VorbisFile DLL
+ if (! Sys_LoadLibrary (dllname_vo, &vo_dll, NULL) ||
+ ! Sys_LoadLibrary (dllname_vf, &vf_dll, oggvorbisfuncs))
{
+ Sys_UnloadLibrary (&vo_dll);
Con_Printf ("Ogg Vorbis support disabled\n");
return false;
}
void OGG_CloseLibrary (void)
{
Sys_UnloadLibrary (&vf_dll);
+ Sys_UnloadLibrary (&vo_dll);
}
long ret;
sfxbuffer_t *sb;
- Con_DPrintf ("\"%s\" will be streamed\n", filename);
+ Con_DPrintf ("\"%s\" will be cached\n", filename);
// Decode it
buff = Mem_Alloc (s->mempool, (int)len);