the mega audio-memory-profiler-patch TM
[vg.git] / src / vg / vg_audio.h
index 0b4fc3ea87264e22b1a3980f0e714c7fadce92d0..18d560d6203d1638cca027696d26f002ac87c6b7 100644 (file)
 #include <time.h>
 
 #ifdef __GNUC__
-#ifndef __clang__
-  #pragma GCC push_options
-  #pragma GCC optimize ("O3")
-#endif
+  #ifndef __clang__
+    #pragma GCC push_options
+    #pragma GCC optimize ("O3")
+  #endif
 #endif
 
 #pragma GCC diagnostic push
@@ -43,9 +43,9 @@
 #pragma GCC diagnostic pop 
 
 #ifdef __GNUC__
-#ifndef __clang__
-  #pragma GCC pop_options
-#endif
+  #ifndef __clang__
+    #pragma GCC pop_options
+  #endif
 #endif
 
 #define SFX_MAX_SYSTEMS       32
@@ -765,8 +765,11 @@ VG_STATIC void audio_mixer_callback( ma_device *pDevice, void *pOutBuf,
    audio_unlock();
 }
 
-VG_STATIC void audio_clip_load( audio_clip *clip )
+VG_STATIC void audio_clip_load( audio_clip *clip, void *lin_alloc )
 {
+   if( lin_alloc == NULL )
+      lin_alloc = vg_audio.audio_pool;
+
    if( clip->source_mode == k_audio_source_mono )
    {
       vg_linear_clear( vg_mem.scratch );
@@ -795,7 +798,7 @@ VG_STATIC void audio_clip_load( audio_clip *clip )
           data_size      = length_samples * sizeof(i16);
 
       audio_lock();
-      clip->data = vg_linear_alloc( vg_audio.audio_pool, data_size );
+      clip->data = vg_linear_alloc( lin_alloc, data_size );
       clip->size = length_samples;
       audio_unlock();
 
@@ -814,7 +817,7 @@ VG_STATIC void audio_clip_load( audio_clip *clip )
    else if( clip->source_mode == k_audio_source_compressed )
    {
       audio_lock();
-      clip->data = vg_file_read( vg_audio.audio_pool, clip->path, &clip->size );
+      clip->data = vg_file_read( lin_alloc, clip->path, &clip->size );
       audio_unlock();
 
       if( !clip->data )
@@ -825,10 +828,10 @@ VG_STATIC void audio_clip_load( audio_clip *clip )
    }
 }
 
-VG_STATIC void audio_clip_loadn( audio_clip *arr, int count )
+VG_STATIC void audio_clip_loadn( audio_clip *arr, int count, void *lin_alloc )
 {
    for( int i=0; i<count; i++ )
-      audio_clip_load( &arr[i] );
+      audio_clip_load( &arr[i], lin_alloc );
 }
 
 /* Mark change to be uploaded through queue system */