summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiguel Freitas <miguelfreitas@users.sourceforge.net>2002-07-26 11:26:33 +0000
committerMiguel Freitas <miguelfreitas@users.sourceforge.net>2002-07-26 11:26:33 +0000
commit5e668971ce54761cf5ca1e1b2d84030844f96eb7 (patch)
tree055a67929d2576e513eb47edc64e0521373bc654
parent19fe4c3ec92acf0bc3f85ad48d059680d67fdf59 (diff)
downloadxine-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.mpvbin27309 -> 28921 bytes
-rw-r--r--misc/xine_logo.pngbin41894 -> 46649 bytes
-rw-r--r--src/libmpeg2/decode.c18
3 files changed, 6 insertions, 12 deletions
diff --git a/misc/xine_logo.mpv b/misc/xine_logo.mpv
index b1cb59414..dba01c40f 100644
--- a/misc/xine_logo.mpv
+++ b/misc/xine_logo.mpv
Binary files differ
diff --git a/misc/xine_logo.png b/misc/xine_logo.png
index 3aad01fc9..dbdd49800 100644
--- a/misc/xine_logo.png
+++ b/misc/xine_logo.png
Binary files differ
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);
}
}