diff options
author | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2002-07-26 11:26:33 +0000 |
---|---|---|
committer | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2002-07-26 11:26:33 +0000 |
commit | 5e668971ce54761cf5ca1e1b2d84030844f96eb7 (patch) | |
tree | 055a67929d2576e513eb47edc64e0521373bc654 | |
parent | 19fe4c3ec92acf0bc3f85ad48d059680d67fdf59 (diff) | |
download | xine-lib-5e668971ce54761cf5ca1e1b2d84030844f96eb7.tar.gz xine-lib-5e668971ce54761cf5ca1e1b2d84030844f96eb7.tar.bz2 |
- 4x3 xine_logo with url
- fix a rare deadlock case while flushing libmpeg2
CVS patchset: 2355
CVS date: 2002/07/26 11:26:33
-rw-r--r-- | misc/xine_logo.mpv | bin | 27309 -> 28921 bytes | |||
-rw-r--r-- | misc/xine_logo.png | bin | 41894 -> 46649 bytes | |||
-rw-r--r-- | src/libmpeg2/decode.c | 18 |
3 files changed, 6 insertions, 12 deletions
diff --git a/misc/xine_logo.mpv b/misc/xine_logo.mpv Binary files differindex b1cb59414..dba01c40f 100644 --- a/misc/xine_logo.mpv +++ b/misc/xine_logo.mpv diff --git a/misc/xine_logo.png b/misc/xine_logo.png Binary files differindex 3aad01fc9..dbdd49800 100644 --- a/misc/xine_logo.png +++ b/misc/xine_logo.png diff --git a/src/libmpeg2/decode.c b/src/libmpeg2/decode.c index 35b3f15e0..df5b824a5 100644 --- a/src/libmpeg2/decode.c +++ b/src/libmpeg2/decode.c @@ -520,6 +520,10 @@ void mpeg2_reset (mpeg2dec_t * mpeg2dec) { */ } +/* flush must never allocate any frame (get_frame/duplicate_frame). + * it is called from inside video_out loop and frame allocation + * may cause some (rare) deadlocks. + */ void mpeg2_flush (mpeg2dec_t * mpeg2dec) { picture_t *picture = mpeg2dec->picture; @@ -529,8 +533,6 @@ void mpeg2_flush (mpeg2dec_t * mpeg2dec) { if (picture->current_frame && !picture->current_frame->drawn && !picture->current_frame->bad_frame) { - - vo_frame_t *img; printf ("libmpeg2: blasting out current frame %d on flush\n", picture->current_frame->id); @@ -538,16 +540,8 @@ void mpeg2_flush (mpeg2dec_t * mpeg2dec) { picture->current_frame->drawn = 1; get_frame_duration(mpeg2dec, picture->current_frame); - /* output a copy instead of the frame used by decoder */ - img = picture->current_frame->instance->duplicate_frame(picture->current_frame->instance, - picture->current_frame); - img->pts = 0; - img->bad_frame = 0; - img->drawn = 1; - - img->draw(img); - img->free(img); - + picture->current_frame->pts = 0; + picture->current_frame->draw(picture->current_frame); } } |