summaryrefslogtreecommitdiff
path: root/recordmydesktop/src/rmd_threads.c
diff options
context:
space:
mode:
Diffstat (limited to 'recordmydesktop/src/rmd_threads.c')
-rw-r--r--recordmydesktop/src/rmd_threads.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/recordmydesktop/src/rmd_threads.c b/recordmydesktop/src/rmd_threads.c
index 7afe792..91823b4 100644
--- a/recordmydesktop/src/rmd_threads.c
+++ b/recordmydesktop/src/rmd_threads.c
@@ -119,11 +119,13 @@ void rmdThreads(ProgData *pdata) {
pthread_join(image_capture_t,NULL);
fprintf(stderr,"Shutting down.");
//if no damage events have been received the thread will get stuck
- while (!pdata->th_enc_thread_waiting && !pdata->th_encoding_clean) {
- usleep(10000);
- pthread_mutex_lock(&pdata->img_buff_ready_mutex);
+ pthread_mutex_lock(&pdata->img_buff_ready_mutex);
+ while (pdata->th_enc_thread_waiting && !pdata->th_encoding_clean) {
+ puts("waiting for th_enc");
+ pdata->th_enc_thread_waiting = 0;
pthread_cond_signal(&pdata->image_buffer_ready);
pthread_mutex_unlock(&pdata->img_buff_ready_mutex);
+ usleep(10000);
}
if (pdata->args.encOnTheFly)
@@ -141,11 +143,13 @@ void rmdThreads(ProgData *pdata) {
pthread_join(sound_capture_t,NULL);
fprintf(stderr,".");
+ pthread_mutex_lock(&pdata->snd_buff_ready_mutex);
while (pdata->v_enc_thread_waiting || !pdata->v_encoding_clean) {
- usleep(10000);
- pthread_mutex_lock(&pdata->snd_buff_ready_mutex);
+ puts("waiting for v_enc");
+ pdata->v_enc_thread_waiting = 0;
pthread_cond_signal(&pdata->sound_data_read);
pthread_mutex_unlock(&pdata->snd_buff_ready_mutex);
+ usleep(10000);
}
if (pdata->args.encOnTheFly)
© All Rights Reserved