From 476b056ed072e53d6c1473b8caa89b6b8f145b05 Mon Sep 17 00:00:00 2001 From: mannol Date: Tue, 24 Jun 2014 00:20:44 +0200 Subject: [PATCH] make it dynamic --- src/audio_call.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/audio_call.c b/src/audio_call.c index 689bc61..67607ec 100644 --- a/src/audio_call.c +++ b/src/audio_call.c @@ -55,7 +55,7 @@ typedef struct _Call { pthread_t ttid; /* Transmission thread id */ - _Bool ttas; /* Transmission thread active status (0 - stopped, 1- running) */ + _Bool ttas, has_output; /* Transmission thread active status (0 - stopped, 1- running) */ int in_idx, out_idx; pthread_mutex_t mutex; } Call; @@ -189,7 +189,7 @@ void *transmission(void *arg) int32_t dec_frame_len; int16_t PCM[frame_size]; - _Bool has_output = 1; + this_call->has_output = 1; if ( open_primary_device(input, &this_call->in_idx) != de_None ) line_info_add(self, NULL, NULL, NULL, "Failed to open input device!", SYS_MSG, 0, 0); @@ -199,13 +199,13 @@ void *transmission(void *arg) if ( open_primary_device(output, &this_call->out_idx) != de_None ) { line_info_add(self, NULL, NULL, NULL, "Failed to open output device!", SYS_MSG, 0, 0); - has_output = 0; + this_call->has_output = 0; } /* Start transmission */ while (this_call->ttas) { - if ( has_output ) { - lock; + lock; + if ( this_call->has_output ) { if (playback_device_ready(this_call->out_idx) == de_Busy) { unlock; @@ -222,8 +222,9 @@ void *transmission(void *arg) /* >implying it'll ever get an error */ } - unlock; } + unlock; + usleep(1000); } @@ -653,7 +654,8 @@ void cmd_ccur_device(WINDOW * window, ToxWindow * self, Tox *m, int argc, char ( if (type == output) { pthread_mutex_lock(&this_call->mutex); close_device(output, this_call->out_idx); - open_device(output, selection, &this_call->out_idx); + this_call->has_output = open_device(output, selection, &this_call->out_idx) + == de_None ? 1 : 0; pthread_mutex_unlock(&this_call->mutex); } else {