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