Allow for os_stop_sample() to work properly, more or less.
authorDavid Griffith <dave@661.org>
Sun, 19 Apr 2015 06:40:35 +0000 (23:40 -0700)
committerDavid Griffith <dave@661.org>
Sun, 19 Apr 2015 06:40:35 +0000 (23:40 -0700)
src/curses/ux_audio.c

index 935ad17aed5bcfd5a2b281b9b7b38fac64374add..b10c88d06f9b58f5e159868689a7db359f0f5885 100644 (file)
@@ -53,6 +53,7 @@
 typedef struct {
     FILE *fp;
     bb_result_t result;
+    int number;
     int vol;
     int repeats;
 } EFFECT;
@@ -82,9 +83,10 @@ float        *musicbuffer;
 float  *bleepbuffer;
 int    bleepchannels;
 int    bleeprate;
+int    bleepcount;
+int    bleepnum;
 
 int    musiccount;
-int    bleepcount;
 
 
 
@@ -185,6 +187,7 @@ void os_start_sample (int number, int volume, int repeats, zword eos)
     myeffect.result = resource;
     myeffect.vol = volume;
     myeffect.repeats = repeats;
+    myeffect.number = number;
 
     pthread_attr_init(&attr);
     pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
@@ -215,7 +218,7 @@ void os_start_sample (int number, int volume, int repeats, zword eos)
 
 void os_stop_sample (int number)
 {
-    if (bleep_playing) {
+    if (bleep_playing && number == bleepnum) {
        bleep_stop = TRUE;
     }
     return;
@@ -392,6 +395,7 @@ void *playaiff(EFFECT *raw_effect)
     sem_post(&playaiff_okay);
 
     sf_info.format = 0;
+    bleepnum = myeffect.number;
 
     filestart = ftell(myeffect.fp);
     lseek(fileno(myeffect.fp), myeffect.result.data.startpos, SEEK_SET);