Browse Source

FMOD will copy the sound buffer into its own memory when FMOD_CREATESAMPLE is used, so we don't need to keep the loaded sound files in Hunk memory anymore.

console
Nico de Poel 5 years ago
parent
commit
bf4a09cfd7
  1. 6
      engine/Quake/snd_fmod.c

6
engine/Quake/snd_fmod.c

@ -614,6 +614,7 @@ sfxcache_t *S_LoadSound(sfx_t *s)
{
char namebuffer[256];
byte *data;
byte stackbuf[1 * 1024]; // avoid dirtying the cache heap
wavinfo_t info;
FMOD_CREATESOUNDEXINFO exinfo;
FMOD_RESULT result;
@ -633,7 +634,7 @@ sfxcache_t *S_LoadSound(sfx_t *s)
q_strlcpy(namebuffer, "sound/", sizeof(namebuffer));
q_strlcat(namebuffer, s->name, sizeof(namebuffer));
data = COM_LoadHunkFile(namebuffer, NULL);
data = COM_LoadStackFile(namebuffer, stackbuf, sizeof(stackbuf), NULL);
if (!data)
{
Con_Printf("Couldn't load %s\n", namebuffer);
@ -651,7 +652,8 @@ sfxcache_t *S_LoadSound(sfx_t *s)
exinfo.cbsize = sizeof(FMOD_CREATESOUNDEXINFO);
exinfo.length = com_filesize;
result = FMOD_System_CreateSound(fmod_system, (const char*)data, FMOD_3D | FMOD_OPENMEMORY, &exinfo, &s->sound);
// This will copy the sound data into FMOD's internal buffers, so there's no need to keep it around in hunk memory
result = FMOD_System_CreateSound(fmod_system, (const char*)data, FMOD_3D | FMOD_OPENMEMORY | FMOD_CREATESAMPLE, &exinfo, &s->sound);
if (result != FMOD_OK)
{
Con_Printf("Failed to create FMOD sound: %s\n", FMOD_ErrorString(result));

Loading…
Cancel
Save