@ -614,6 +614,7 @@ sfxcache_t *S_LoadSound(sfx_t *s)
{
{
char namebuffer [ 256 ] ;
char namebuffer [ 256 ] ;
byte * data ;
byte * data ;
byte stackbuf [ 1 * 1024 ] ; / / avoid dirtying the cache heap
wavinfo_t info ;
wavinfo_t info ;
FMOD_CREATESOUNDEXINFO exinfo ;
FMOD_CREATESOUNDEXINFO exinfo ;
FMOD_RESULT result ;
FMOD_RESULT result ;
@ -633,7 +634,7 @@ sfxcache_t *S_LoadSound(sfx_t *s)
q_strlcpy ( namebuffer , " sound/ " , sizeof ( namebuffer ) ) ;
q_strlcpy ( namebuffer , " sound/ " , sizeof ( namebuffer ) ) ;
q_strlcat ( namebuffer , s - > name , sizeof ( namebuffer ) ) ;
q_strlcat ( namebuffer , s - > name , sizeof ( namebuffer ) ) ;
data = COM_LoadHun kFile ( namebuffer , NULL ) ;
data = COM_LoadStac kFile ( namebuffer , stackbuf , sizeof ( stackbuf ) , NULL ) ;
if ( ! data )
if ( ! data )
{
{
Con_Printf ( " Couldn't load %s \n " , namebuffer ) ;
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 . cbsize = sizeof ( FMOD_CREATESOUNDEXINFO ) ;
exinfo . length = com_filesize ;
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 )
if ( result ! = FMOD_OK )
{
{
Con_Printf ( " Failed to create FMOD sound: %s \n " , FMOD_ErrorString ( result ) ) ;
Con_Printf ( " Failed to create FMOD sound: %s \n " , FMOD_ErrorString ( result ) ) ;