diff --git a/android/client/if-sco.c b/android/client/if-sco.c
index 0e27a9d..456c529 100644
--- a/android/client/if-sco.c
+++ b/android/client/if-sco.c
static void stop_p(int argc, const char **argv)
{
+ RETURN_IF_NULL(if_audio_sco);
+ RETURN_IF_NULL(play_thread);
+
pthread_mutex_lock(&state_mutex);
if (current_state == STATE_STOPPED || current_state == STATE_STOPPING) {
pthread_mutex_unlock(&state_mutex);
current_state = STATE_STOPPING;
pthread_mutex_unlock(&state_mutex);
+ pthread_join(play_thread, NULL);
+ play_thread = 0;
+
pthread_mutex_lock(&outstream_mutex);
stream_out->common.standby(&stream_out->common);
pthread_mutex_unlock(&outstream_mutex);
RETURN_IF_NULL(if_audio_sco);
RETURN_IF_NULL(stream_out);
- stop_p(argc, argv);
-
- haltest_info("Waiting for playback thread...\n");
- pthread_join(play_thread, NULL);
+ if (play_thread)
+ stop_p(argc, argv);
if_audio_sco->close_output_stream(if_audio_sco, stream_out);
RETURN_IF_NULL(if_audio_sco);
RETURN_IF_NULL(stream_in);
- stop_p(argc, argv);
-
- haltest_info("Waiting for playback thread...\n");
- pthread_join(play_thread, NULL);
+ if (play_thread)
+ stop_p(argc, argv);
if_audio_sco->close_input_stream(if_audio_sco, stream_in);