X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=snd_mem.c;h=7908ea87b24b6c551d534a77b3b7a109266cd4da;hp=27414ea83764a6bce317156b98ecfaf60e9c9d0e;hb=6abd2a8816c110a29d6e2ecc2f574c9ef2ddc48f;hpb=4f211d0b688dcba4bf7a0af322cbf1b49cf2a241 diff --git a/snd_mem.c b/snd_mem.c index 27414ea8..7908ea87 100644 --- a/snd_mem.c +++ b/snd_mem.c @@ -207,38 +207,23 @@ void ResampleSfx (sfxcache_t *sc, qbyte *data, char *name) /* ============== -S_LoadSound +S_LoadWavFile ============== */ -sfxcache_t *S_LoadSound (sfx_t *s, int complain) +sfxcache_t *S_LoadWavFile (const char *filename, sfx_t *s) { - char namebuffer[MAX_QPATH]; qbyte *data; wavinfo_t info; int len; sfxcache_t *sc; - // see if still in memory - if (!shm || !shm->speed) - return NULL; - if (s->sfxcache && s->sfxcache->speed == shm->speed) - return s->sfxcache; - - // load it in - snprintf(namebuffer, sizeof(namebuffer), "sound/%s", s->name); - - data = FS_LoadFile(namebuffer, false); - + // Load the file + data = FS_LoadFile(filename, false); if (!data) - { - s->silentlymissing = !complain; - if (complain) - Con_Printf("Couldn't load %s\n", namebuffer); return NULL; - } info = GetWavinfo (s->name, data, fs_filesize); - // LordHavoc: stereo sounds are now allowed (intended for music) + // Stereo sounds are allowed (intended for music) if (info.channels < 1 || info.channels > 2) { Con_Printf("%s has an unsupported number of channels (%i)\n",s->name, info.channels); @@ -274,6 +259,45 @@ sfxcache_t *S_LoadSound (sfx_t *s, int complain) return sc; } + +/* +============== +S_LoadSound +============== +*/ +sfxcache_t *S_LoadSound (sfx_t *s, int complain) +{ + char namebuffer[MAX_QPATH]; + size_t len; + sfxcache_t *sc; + + // see if still in memory + if (!shm || !shm->speed) + return NULL; + if (s->sfxcache && (s->sfxcache->speed == shm->speed)) + return s->sfxcache; + + len = snprintf (namebuffer, sizeof (namebuffer), "sound/%s", s->name); + if (len >= sizeof (namebuffer)) + return NULL; + + // Try to load it as a WAV file + sc = S_LoadWavFile (namebuffer, s); + + // TODO: insert Ogg Vorbis support here + + // Can't load the sound! + if (sc == NULL) + { + s->silentlymissing = !complain; + if (complain) + Con_Printf ("Couldn't load %s\n", namebuffer); + return NULL; + } + + return sc; +} + void S_UnloadSound(sfx_t *s) { if (s->sfxcache)