]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - snd_wav.c
changed reflect/refract keywords to
[xonotic/darkplaces.git] / snd_wav.c
index d96c8199ee69cf307709312150d767f360528532..7ce6b2744d3b164ecfd0e0a7a038a1d17f5bd32c 100644 (file)
--- a/snd_wav.c
+++ b/snd_wav.c
@@ -223,10 +223,10 @@ static wavinfo_t GetWavinfo (char *name, unsigned char *wav, int wavlength)
 WAV_FetchSound
 ====================
 */
-static const snd_buffer_t* WAV_FetchSound (channel_t* ch, unsigned int *start, unsigned int nbsampleframes)
+static const snd_buffer_t* WAV_FetchSound (void *sfxfetcher, void **chfetcherpointer, unsigned int *start, unsigned int nbsampleframes)
 {
        *start = 0;
-       return (snd_buffer_t *)ch->sfx->fetcher_data;
+       return (snd_buffer_t *)sfxfetcher;
 }
 
 /*
@@ -234,16 +234,11 @@ static const snd_buffer_t* WAV_FetchSound (channel_t* ch, unsigned int *start, u
 WAV_FreeSfx
 ====================
 */
-static void WAV_FreeSfx (sfx_t* sfx)
+static void WAV_FreeSfx (void *sfxfetcherdata)
 {
-       snd_buffer_t* sb = (snd_buffer_t *)sfx->fetcher_data;
-
+       snd_buffer_t* sb = (snd_buffer_t *)sfxfetcherdata;
        // Free the sound buffer
-       sfx->memsize -= (sb->maxframes * sb->format.channels * sb->format.width) + sizeof (*sb) - sizeof (sb->samples);
        Mem_Free(sb);
-
-       sfx->fetcher_data = NULL;
-       sfx->fetcher = NULL;
 }
 
 /*
@@ -332,9 +327,10 @@ qboolean S_LoadWavFile (const char *filename, sfx_t *sfx)
        sfx->memsize += sb->maxframes * sb->format.channels * sb->format.width + sizeof (*sb) - sizeof (sb->samples);
 
        if (info.loopstart < 0)
-               sfx->loopstart = -1;
+               sfx->loopstart = sfx->total_length;
        else
                sfx->loopstart = (double)info.loopstart * (double)snd_renderbuffer->format.speed / (double)sb->format.speed;
+       sfx->loopstart = min(sfx->loopstart, sfx->total_length);
        sfx->flags &= ~SFXFLAG_STREAMED;
 
        Mem_Free (data);