changeset 17128:34f870d8e8a8

really clear frames to black instead of grey, and make sure one of those cleared frames is actually shown (and not a leftover from last film, which happened at least with ATI cards).
author reimar
date Wed, 07 Dec 2005 16:04:14 +0000
parents f650267ecc3a
children f1e92bc7f6d1
files libvo/vosub_vidix.c
diffstat 1 files changed, 14 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/libvo/vosub_vidix.c	Wed Dec 07 15:56:27 2005 +0000
+++ b/libvo/vosub_vidix.c	Wed Dec 07 16:04:14 2005 +0000
@@ -404,6 +404,7 @@
 		   unsigned dst_height,unsigned format,unsigned dest_bpp,
 		   unsigned vid_w,unsigned vid_h)
 {
+  void *tmp, *tmpa;
   size_t i;
   int err;
   uint32_t sstride,apitch;
@@ -495,14 +496,22 @@
 
 	vidix_mem = vidix_play.dga_addr;
 
-	/* select first frame */
-	next_frame = 0;
-//        vdlPlaybackFrameSelect(vidix_handler,next_frame);
-
+	tmp = calloc(image_width, image_height);
+	tmpa = malloc(image_width * image_height);
+	memset(tmpa, 1, image_width * image_height);
 	/* clear every frame with correct address and frame_size */
-	for (i = 0; i < vidix_play.num_frames; i++)
+	/* HACK: use draw_alpha to clear Y component */
+	for (i = 0; i < vidix_play.num_frames; i++) {
+	    next_frame = i;
 	    memset(vidix_mem + vidix_play.offsets[i], 0x80,
 		vidix_play.frame_size);
+	    draw_alpha(0, 0, image_width, image_height, tmp, tmpa, image_width);
+	}
+	free(tmp);
+	free(tmpa);
+	/* show one of the "clear" frames */
+	vidix_flip_page();
+
 	switch(format)
 	{
 	    case IMGFMT_YV12: