Author: titmuss
Date: Tue Nov 11 03:28:19 2008
New Revision: 3320

URL: http://svn.slimdevices.com?rev=3320&root=Jive&view=rev
Log:
Bug: N/A
Description:
Fix some potential thread issues.


Modified:
    7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode.c
    7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_output.c
    7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_sample.c

Modified: 7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode.c
URL: 
http://svn.slimdevices.com/7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode.c?rev=3320&root=Jive&r1=3319&r2=3320&view=diff
==============================================================================
--- 7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode.c (original)
+++ 7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode.c Tue Nov 11 
03:28:19 2008
@@ -152,6 +152,8 @@
 
        DEBUG_TRACE("decode_stop_handler");
 
+       fifo_lock(&decode_fifo);
+
        current_decoder_state = 0;
        current_audio_state = 0;
 
@@ -167,6 +169,8 @@
        decode_output_end();
 
        streambuf_flush();
+
+       fifo_unlock(&decode_fifo);
 }
 
 
@@ -175,6 +179,8 @@
 
        DEBUG_TRACE("decode_flush_handler");
 
+       fifo_lock(&decode_fifo);
+
        current_decoder_state = 0;
 
        if (decoder) {
@@ -186,6 +192,8 @@
 
        decode_first_buffer = FALSE;
        decode_output_flush();
+
+       fifo_unlock(&decode_fifo);
 }
 
 
@@ -212,6 +220,8 @@
 
        DEBUG_TRACE("decode_start_handler decoder=%x num_params=%d", 
decoder_id, num_params);
 
+       fifo_lock(&decode_fifo);
+
        for (i = 0; i < sizeof(all_decoders); i++) {
                if (all_decoders[i]->id == decoder_id) {
                        decoder = all_decoders[i];
@@ -227,6 +237,8 @@
        decode_set_track_polarity_inversion(polarity_inversion);
 
        decode_output_begin();
+
+       fifo_unlock(&decode_fifo);
 }
 
 
@@ -235,7 +247,11 @@
 
        DEBUG_TRACE("decode_song_ended_handler");
 
+       fifo_lock(&decode_fifo);
+
        decode_output_song_ended();
+
+       fifo_unlock(&decode_fifo);
 }
 
 
@@ -659,12 +675,14 @@
                return 0;
        }
 
+       fifo_init(&decode_fifo, DECODE_FIFO_SIZE);
+
        if (!decode_audio->init()) {
                DEBUG_ERROR("Failed to init audio");
+
+               fifo_free(&decode_fifo);
                return 0;
        }
-
-       fifo_init(&decode_fifo, DECODE_FIFO_SIZE);
 
        mqueue_init(&decode_mqueue, decode_mqueue_buffer, 
sizeof(decode_mqueue_buffer));
 

Modified: 7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_output.c
URL: 
http://svn.slimdevices.com/7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_output.c?rev=3320&root=Jive&r1=3319&r2=3320&view=diff
==============================================================================
--- 7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_output.c 
(original)
+++ 7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_output.c Tue 
Nov 11 03:28:19 2008
@@ -52,7 +52,7 @@
 
 
 void decode_output_begin(void) {
-       // XXXX fifo mutex
+       /* call with the decode fifo locked */
 
        decode_audio->start();
 
@@ -68,7 +68,7 @@
 
 
 void decode_output_end(void) {
-       // XXXX fifo mutex
+       /* call with the decode fifo locked */
 
        output_started = FALSE;
 
@@ -81,7 +81,7 @@
 
 
 void decode_output_flush(void) {
-       // XXXX fifo mutex
+       /* call with the decode fifo locked */
 
        if (check_start_point) {
                decode_fifo.wptr = track_start_point;
@@ -481,22 +481,9 @@
 
 /* This removes padding samples from the buffer (for gapless mp3 playback). */
 void decode_output_remove_padding(u32_t nsamples, u32_t sample_rate) {
-#if 0
-       int numerator, denominator;
-       u32_t resampled_rate;
-#endif
        size_t buffer_size;
 
        buffer_size = SAMPLES_TO_BYTES(nsamples);
-
-#if 0
-       // XXXX full port from ip3k
-       u32_t resampled_rate = decode_output_scaled_samplerate(sample_rate, 
&numerator, &denominator);
-       if (numerator != 1) {
-               buffer_size /= numerator;
-       }
-       buffer_size *= denominator;
-#endif
 
        DEBUG_TRACE("Removing %d bytes padding from buffer", (unsigned 
int)buffer_size);
 

Modified: 7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_sample.c
URL: 
http://svn.slimdevices.com/7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_sample.c?rev=3320&root=Jive&r1=3319&r2=3320&view=diff
==============================================================================
--- 7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_sample.c 
(original)
+++ 7.3/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_sample.c Tue 
Nov 11 03:28:19 2008
@@ -8,6 +8,7 @@
 #include "common.h"
 #include "ui/jive.h"
 #include "audio/fixed_math.h"
+#include "audio/decode/decode_priv.h"
 
 
 struct jive_sample {
@@ -110,17 +111,17 @@
                return 0;
        }
 
-       // lock
+       fifo_lock(&decode_fifo);
 
        if (sample[snd->mixer] != NULL) {
                /* slot if not free */
-               // unlock
+               fifo_unlock(&decode_fifo);
                return 0;
        }
 
        sample[snd->mixer] = snd;
        sample[snd->mixer]->refcount++;
-       // unlock
+       fifo_unlock(&decode_fifo);
 
        return 0;
 }

_______________________________________________
Jive-checkins mailing list
[email protected]
http://lists.slimdevices.com/cgi-bin/mailman/listinfo/jive-checkins

Reply via email to