diff options
Diffstat (limited to 'recordmydesktop/src/rmd_threads.c')
-rw-r--r-- | recordmydesktop/src/rmd_threads.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/recordmydesktop/src/rmd_threads.c b/recordmydesktop/src/rmd_threads.c index b7e13f3..cb81f84 100644 --- a/recordmydesktop/src/rmd_threads.c +++ b/recordmydesktop/src/rmd_threads.c @@ -119,14 +119,15 @@ 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 - pthread_mutex_lock(&pdata->img_buff_ready_mutex); - while (pdata->th_enc_thread_waiting && !pdata->th_encoding_clean) { + pthread_mutex_lock(&pdata->theora_lib_mutex); + while (!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); + pthread_mutex_unlock(&pdata->theora_lib_mutex); usleep(10000); + pthread_mutex_lock(&pdata->theora_lib_mutex); } + pthread_mutex_unlock(&pdata->theora_lib_mutex); if (pdata->args.encOnTheFly) pthread_join(image_encode_t, NULL); @@ -143,14 +144,15 @@ 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) { + pthread_mutex_lock(&pdata->vorbis_lib_mutex); + while (!pdata->v_encoding_clean) { 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); + pthread_mutex_unlock(&pdata->vorbis_lib_mutex); usleep(10000); + pthread_mutex_lock(&pdata->vorbis_lib_mutex); } + pthread_mutex_unlock(&pdata->vorbis_lib_mutex); if (pdata->args.encOnTheFly) pthread_join(sound_encode_t, NULL); |