summaryrefslogtreecommitdiff
path: root/recordmydesktop/src/encode_sound_buffer.c
diff options
context:
space:
mode:
authoriovar <iovar@f606c939-3180-4ac9-a4b8-4b8779d57d0a>2007-01-29 21:15:32 +0000
committeriovar <iovar@f606c939-3180-4ac9-a4b8-4b8779d57d0a>2007-01-29 21:15:32 +0000
commit17979ae99228dd0422c26e366d6453663b9664a4 (patch)
tree589dc742d8fbfdbdd034517dbbccc0e290789047 /recordmydesktop/src/encode_sound_buffer.c
parent6ddb091a949d1c7ef107307aedf980bc34f6aa57 (diff)
Fixed all condition variables, to be waited with correct mutexes.
This fixed also the wakeup from pause bug. git-svn-id: https://recordmydesktop.svn.sourceforge.net/svnroot/recordmydesktop/trunk@269 f606c939-3180-4ac9-a4b8-4b8779d57d0a
Diffstat (limited to 'recordmydesktop/src/encode_sound_buffer.c')
-rw-r--r--recordmydesktop/src/encode_sound_buffer.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/recordmydesktop/src/encode_sound_buffer.c b/recordmydesktop/src/encode_sound_buffer.c
index 2ea76cc..f20d98e 100644
--- a/recordmydesktop/src/encode_sound_buffer.c
+++ b/recordmydesktop/src/encode_sound_buffer.c
@@ -33,8 +33,6 @@ void *EncodeSoundBuffer(ProgData *pdata){
#else
int sampread=pdata->args.buffsize>>1;
#endif
- pthread_mutex_t smut;
- pthread_mutex_init(&smut,NULL);
pdata->v_encoding_clean=0;
while((pdata->running)){
float **vorbis_buffer;
@@ -42,14 +40,17 @@ void *EncodeSoundBuffer(ProgData *pdata){
SndBuffer *buff;
if(Paused){
- pthread_mutex_t tmut;
- pthread_mutex_init(&tmut,NULL);
- pthread_cond_wait(&pdata->pause_cond,&tmut);
+ pthread_mutex_lock(&pause_mutex);
+ pthread_cond_wait(&pdata->pause_cond,&pause_mutex);
+ pthread_mutex_unlock(&pause_mutex);
}
if(pdata->sound_buffer==NULL){
pdata->v_enc_thread_waiting=1;
- pthread_cond_wait(&pdata->sound_data_read,&smut);
+ pthread_mutex_lock(&pdata->snd_buff_ready_mutex);
+ pthread_cond_wait(&pdata->sound_data_read,
+ &pdata->snd_buff_ready_mutex);
+ pthread_mutex_unlock(&pdata->snd_buff_ready_mutex);
pdata->v_enc_thread_waiting=0;
}
if(pdata->sound_buffer==NULL || !pdata->running)
@@ -93,7 +94,9 @@ void *EncodeSoundBuffer(ProgData *pdata){
}
pdata->v_encoding_clean=1;
+ pthread_mutex_lock(&pdata->vorbis_lib_mutex);
pthread_cond_signal(&pdata->vorbis_lib_clean);
+ pthread_mutex_unlock(&pdata->vorbis_lib_mutex);
pthread_exit(&errno);
}
© All Rights Reserved