fix bug with audio fadeout
[fishladder.git] / vg / vg_audio.h
index e375a5bf087159f74bd0a4dabdc0b5275a965326..0c9a666691e64f62f4926041d41f4fc0679e33cf 100644 (file)
@@ -28,6 +28,8 @@ struct sfx_system
        // Source buffer start
        float *source, *replacement;
        
+       u32 clip_start, clip_end, buffer_length;
+       
        // Modifiers
        sfx_vol_control *vol_src;
        float   vol;
@@ -639,6 +641,11 @@ static void sfx_set_playrnd( sfx_set *source, sfx_system *sys, int min_id, int m
                sys->end        = source->segments[ pick*2 + 1 ];
                sys->ch                 = source->ch;
                
+               // Diagnostics
+               sys->clip_start = sys->cur;
+               sys->clip_end = sys->end;
+               sys->buffer_length = source->segments[ (source->numsegments-1)*2 + 1 ];
+               
                sfx_save( sys );
        }
 }
@@ -647,13 +654,21 @@ static void sfx_system_fadeout( sfx_system *sys, u32 length_samples )
 {
        if( sfx_begin_edit( sys ) )
        {
-               sys->fadeout_current = length_samples;
-               sys->fadeout = length_samples;
+               if( sys->end )
+               {
+                       sys->fadeout_current = length_samples;
+                       sys->fadeout = length_samples;
+                       
+                       if( sys->thread_clone )
+                               sys->cur = sys->thread_clone->cur;
                
-               if( sys->thread_clone )
-                       sys->cur = sys->thread_clone->cur;
-       
-               sfx_save( sys );
+                       sfx_save( sys );
+               }
+               else
+               {
+                       // Sound was not initialized
+                       MUTEX_UNLOCK( sfx_mux_t01 );
+               }
        }
 }