summaryrefslogtreecommitdiff
path: root/recordmydesktop/src/flush_to_ogg.c
diff options
context:
space:
mode:
authoriovar <iovar@f606c939-3180-4ac9-a4b8-4b8779d57d0a>2006-10-01 15:18:09 +0000
committeriovar <iovar@f606c939-3180-4ac9-a4b8-4b8779d57d0a>2006-10-01 15:18:09 +0000
commit330b51ba252146e35576b362174f951c3b8814f8 (patch)
tree32a3252d224673bad43d43ee9a6cc66de590ee62 /recordmydesktop/src/flush_to_ogg.c
parent308b4ea0476659c324e0b1f979f2f83aaf9a4547 (diff)
major segfault bug, related to libogg thread safety, resolved
git-svn-id: https://recordmydesktop.svn.sourceforge.net/svnroot/recordmydesktop/trunk@78 f606c939-3180-4ac9-a4b8-4b8779d57d0a
Diffstat (limited to 'recordmydesktop/src/flush_to_ogg.c')
-rw-r--r--recordmydesktop/src/flush_to_ogg.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/recordmydesktop/src/flush_to_ogg.c b/recordmydesktop/src/flush_to_ogg.c
index 0892d2c..fed07c5 100644
--- a/recordmydesktop/src/flush_to_ogg.c
+++ b/recordmydesktop/src/flush_to_ogg.c
@@ -31,13 +31,17 @@ void *FlushToOgg(void *pdata){
double video_bytesout=0,audio_bytesout=0;
ogg_page videopage,audiopage;
while(((ProgData *)pdata)->running){
+ pthread_mutex_lock(&((ProgData *)pdata)->libogg_mutex);
videoflag=ogg_stream_pageout(&((ProgData *)pdata)->enc_data->m_ogg_ts,&videopage);
+ pthread_mutex_unlock(&((ProgData *)pdata)->libogg_mutex);
if(videoflag){
video_bytesout+=fwrite(videopage.header,1,videopage.header_len,((ProgData *)pdata)->enc_data->fp);
video_bytesout+=fwrite(videopage.body,1,videopage.body_len,((ProgData *)pdata)->enc_data->fp);
videoflag=0;
if(!((ProgData *)pdata)->args.nosound){
+ pthread_mutex_lock(&((ProgData *)pdata)->libogg_mutex);
audioflag=ogg_stream_pageout(&((ProgData *)pdata)->enc_data->m_ogg_vs,&audiopage);
+ pthread_mutex_unlock(&((ProgData *)pdata)->libogg_mutex);
if(audioflag){
audio_bytesout+=fwrite(audiopage.header,1,audiopage.header_len,((ProgData *)pdata)->enc_data->fp);
audio_bytesout+=fwrite(audiopage.body,1,audiopage.body_len,((ProgData *)pdata)->enc_data->fp);
© All Rights Reserved