161 |
161 |
|
162 |
162 |
if (alsa_prebuffer || alsa_paused || ! writable)
|
163 |
163 |
{
|
|
164 |
fprintf(stderr, "start waiting\n");
|
164 |
165 |
pthread_cond_wait (& alsa_cond, & alsa_mutex);
|
|
166 |
fprintf(stderr, "end waiting\n");
|
165 |
167 |
continue;
|
166 |
168 |
}
|
167 |
169 |
|
... | ... | |
232 |
234 |
AUDDBG ("Stopping pump.\n");
|
233 |
235 |
pump_quit = true;
|
234 |
236 |
pthread_cond_broadcast (& alsa_cond);
|
|
237 |
fprintf(stderr, "broadcasted\n");
|
235 |
238 |
poll_wake ();
|
236 |
239 |
pthread_mutex_unlock (& alsa_mutex);
|
237 |
240 |
pthread_join (pump_thread, nullptr);
|
238 |
241 |
pthread_mutex_lock (& alsa_mutex);
|
|
242 |
fprintf(stderr, "joined\n");
|
239 |
243 |
pump_quit = false;
|
240 |
244 |
}
|
241 |
245 |
|
... | ... | |
399 |
403 |
pthread_mutex_lock (& alsa_mutex);
|
400 |
404 |
|
401 |
405 |
assert (alsa_handle);
|
402 |
|
|
|
406 |
fprintf(stderr, "close_audio()\n");
|
403 |
407 |
pump_stop ();
|
|
408 |
fprintf(stderr, "--close_audio()\n");
|
404 |
409 |
CHECK (snd_pcm_drop, alsa_handle);
|
405 |
410 |
|
406 |
411 |
FAILED:
|
... | ... | |
462 |
467 |
|
463 |
468 |
while (snd_pcm_bytes_to_frames (alsa_handle, alsa_buffer.len ()))
|
464 |
469 |
pthread_cond_wait (& alsa_cond, & alsa_mutex);
|
465 |
|
|
|
470 |
fprintf(stderr, "drain()\n");
|
466 |
471 |
pump_stop ();
|
|
472 |
fprintf(stderr, "--drain()\n");
|
467 |
473 |
|
468 |
474 |
if (! alsa_prebuffer)
|
469 |
475 |
{
|
... | ... | |
508 |
514 |
{
|
509 |
515 |
AUDDBG ("Seek requested; discarding buffer.\n");
|
510 |
516 |
pthread_mutex_lock (& alsa_mutex);
|
511 |
|
|
|
517 |
fprintf(stderr, "flush()\n");
|
512 |
518 |
pump_stop ();
|
|
519 |
fprintf(stderr, "--flush()\n");
|
513 |
520 |
CHECK (snd_pcm_drop, alsa_handle);
|
514 |
521 |
|
515 |
522 |
FAILED:
|
516 |
|
-
|