summaryrefslogtreecommitdiff
path: root/recordmydesktop/src/rmd_threads.c
diff options
context:
space:
mode:
authorVito Caputo <vcaputo@pengaru.com>2020-07-11 12:11:14 -0700
committerVito Caputo <vcaputo@pengaru.com>2020-07-11 13:36:42 -0700
commitf0f64460fab4d8d96e49dfe3e056b57d22cfe5ca (patch)
treeb0bee34e6f5c2a03073da5991f2d4d850400c436 /recordmydesktop/src/rmd_threads.c
parent3e5963c755fea09b2a28aa1398f4a92c835a2c69 (diff)
*: more unfucking synchronization
Diffstat (limited to 'recordmydesktop/src/rmd_threads.c')
-rw-r--r--recordmydesktop/src/rmd_threads.c18
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);
© All Rights Reserved