diff options
author | iovar <iovar@f606c939-3180-4ac9-a4b8-4b8779d57d0a> | 2006-10-01 15:18:09 +0000 |
---|---|---|
committer | iovar <iovar@f606c939-3180-4ac9-a4b8-4b8779d57d0a> | 2006-10-01 15:18:09 +0000 |
commit | 330b51ba252146e35576b362174f951c3b8814f8 (patch) | |
tree | 32a3252d224673bad43d43ee9a6cc66de590ee62 /recordmydesktop/src/flush_to_ogg.c | |
parent | 308b4ea0476659c324e0b1f979f2f83aaf9a4547 (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.c | 4 |
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); |