X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=snd_wav.c;h=9ca7fa95b38ca94ad00b8b09826c78ac23309a9c;hb=b51464f3b30341bac7a487d5b9d8c6ee83a68e2c;hp=d96c8199ee69cf307709312150d767f360528532;hpb=da29a8beeb35293e2fd38b51883c91b5cf4cf4ad;p=xonotic%2Fdarkplaces.git diff --git a/snd_wav.c b/snd_wav.c index d96c8199..9ca7fa95 100644 --- 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; } /* @@ -289,7 +284,8 @@ qboolean S_LoadWavFile (const char *filename, sfx_t *sfx) return false; } - Con_DPrintf ("Loading WAV file \"%s\"\n", filename); + if (developer_loading.integer >= 2) + Con_Printf ("Loading WAV file \"%s\"\n", filename); info = GetWavinfo (sfx->name, data, (int)filesize); if (info.channels < 1 || info.channels > 2) // Stereo sounds are allowed (intended for music) @@ -332,9 +328,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 = (unsigned int) ((double)info.loopstart * (double)sb->format.speed / (double)info.rate); + sfx->loopstart = min(sfx->loopstart, sfx->total_length); sfx->flags &= ~SFXFLAG_STREAMED; Mem_Free (data);