summaryrefslogtreecommitdiff
path: root/firmware/pcm.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/pcm.c')
-rw-r--r--firmware/pcm.c25
1 files changed, 10 insertions, 15 deletions
diff --git a/firmware/pcm.c b/firmware/pcm.c
index ea451a0b9f..0b5b49ebab 100644
--- a/firmware/pcm.c
+++ b/firmware/pcm.c
@@ -213,6 +213,7 @@ static void pcm_play_data_start(unsigned char *start, size_t size)
213 if (start && size) 213 if (start && size)
214 { 214 {
215 logf(" pcm_play_dma_start"); 215 logf(" pcm_play_dma_start");
216 pcm_apply_settings();
216 pcm_play_dma_start(start, size); 217 pcm_play_dma_start(start, size);
217 pcm_playing = true; 218 pcm_playing = true;
218 pcm_paused = false; 219 pcm_paused = false;
@@ -234,8 +235,6 @@ void pcm_play_data(pcm_more_callback_type get_more,
234 235
235 pcm_callback_for_more = get_more; 236 pcm_callback_for_more = get_more;
236 237
237 pcm_apply_settings();
238
239 logf(" pcm_play_data_start"); 238 logf(" pcm_play_data_start");
240 pcm_play_data_start(start, size); 239 pcm_play_data_start(start, size);
241 240
@@ -256,21 +255,17 @@ void pcm_play_pause(bool play)
256 pcm_play_dma_pause(true); 255 pcm_play_dma_pause(true);
257 pcm_paused = true; 256 pcm_paused = true;
258 } 257 }
259 else 258 else if (pcm_get_bytes_waiting() > 0)
260 { 259 {
260 logf(" pcm_play_dma_pause");
261 pcm_apply_settings(); 261 pcm_apply_settings();
262 262 pcm_play_dma_pause(false);
263 if (pcm_get_bytes_waiting() > 0) 263 pcm_paused = false;
264 { 264 }
265 logf(" pcm_play_dma_pause"); 265 else
266 pcm_play_dma_pause(false); 266 {
267 pcm_paused = false; 267 logf(" pcm_play_dma_start: no data");
268 } 268 pcm_play_data_start(NULL, 0);
269 else
270 {
271 logf(" pcm_play_dma_start: no data");
272 pcm_play_data_start(NULL, 0);
273 }
274 } 269 }
275 } 270 }
276 else 271 else