[Mplayer-cvslog] CVS: main/libvo vo_tdfxfb.c,1.14,1.15
Alex Beregszaszi
alex at mplayerhq.hu
Wed Aug 28 18:22:05 CEST 2002
- Previous message: [Mplayer-cvslog] CVS: main Makefile,1.200,1.201 configure,1.546,1.547 dll_init.c,1.45,1.46 find_sub.c,1.7,1.8 xacodec.c,1.32,1.33
- Next message: [Mplayer-cvslog] CVS: main cfg-common.h,1.52,1.53 cfgparser.c,1.51,1.52 cfgparser.h,1.14,1.15
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/mplayer/main/libvo
In directory mail:/var/tmp.root/cvs-serv7849
Modified Files:
vo_tdfxfb.c
Log Message:
clear screen and tiny image bug patch by Burton Samograd <kruhft at kruhft.dyndns.org>
Index: vo_tdfxfb.c
===================================================================
RCS file: /cvsroot/mplayer/main/libvo/vo_tdfxfb.c,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- vo_tdfxfb.c 13 Apr 2002 19:14:33 -0000 1.14
+++ vo_tdfxfb.c 28 Aug 2002 16:22:02 -0000 1.15
@@ -153,8 +153,16 @@
static void clear_screen()
{
- if(vo_doublebuffering) {
- memset(vidpage, 0, screenwidth * screenheight * screendepth);
+ /* There needs to be some sort of delay here or else things seriously screw up.
+ Causes the image to not be the right size on screen if this isn't like this.
+ A printf before the memset call also seems to work, but this made more sense
+ since it actually checks the status of the card.
+ */
+ do {
+ memset(vidpage, 0, screenwidth * screenheight * screendepth);
+ } while((reg_IO->status & 0x1f) < 1);
+
+ if(vo_doublebuffering) {
memset(hidpage, 0, screenwidth * screenheight * screendepth);
}
}
@@ -171,9 +179,14 @@
if(screenwidth / ratio <= screenheight)
vidheight = (double)screenwidth / ratio;
+ /* Is this really needed? This causes movies that are encoded at YxY
+ sizes to not be displayed properly (they're squished horizontally).
+ This might cause problems with videos that are taller than they are wide
+ but I haven't really seen many of those so we won't worry about it for now. */
+#if 0
else
vidwidth = (double)screenheight * ratio;
-
+#endif
vidx = (screenwidth - vidwidth) / 2;
vidy = (screenheight - vidheight) / 2;
} else { /* Reset to normal size */
@@ -185,7 +198,7 @@
vidheight = r_height;
vidx = vidy = 0;
}
-
+
clear_screen();
}
@@ -265,12 +278,11 @@
in_voodoo_format |= in_width * in_depth;
- /* Linux lives in the first frame */
- if(vo_doublebuffering) {
- vidpageoffset = screenwidth * screenheight * screendepth;
- hidpageoffset = vidpageoffset + screenwidth * screenheight * screendepth;
- } else
- vidpageoffset = hidpageoffset = 0; /* Console background */
+ /* Put the image pages off the console screen so they don't get console messages */
+ /* This used to place single buffered movies onto the main console screen */
+ vidpageoffset = hidpageoffset = screenwidth * screenheight * screendepth;
+ if(vo_doublebuffering)
+ hidpageoffset = vidpageoffset + screenwidth * screenheight * screendepth;
inpageoffset = hidpageoffset + screenwidth * screenheight * screendepth;
@@ -322,6 +334,10 @@
{
voodoo_2d_reg regs = *reg_2d; /* Copy the regs */
int i = 0;
+ /* This has to be done of else setting dstSize doesn't work */
+ /* Must be a gcc 3.0+ bug */
+ int tempvidheight = vidheight;
+ int tempvidwidth = vidwidth;
if(vo_doublebuffering) {
/* Flip to an offscreen buffer for rendering */
@@ -346,7 +362,8 @@
reg_2d->dstBaseAddr = vidpageoffset;
reg_2d->dstXY = XYREG(vidx, vidy);
reg_2d->dstFormat = vid_voodoo_format;
- reg_2d->dstSize = XYREG(vidwidth, vidheight);
+ /* The XYREG macro doesn't seem to work for this line so build the register contents very explicitly */
+ reg_2d->dstSize = ((((unsigned long)vidheight) & 0x0000FFFF) << 16) | (((unsigned long) vidwidth) & 0x0000FFFF);
reg_2d->command = S2S_STRECH_BLT | S2S_IMMED | S2S_ROP;
/* Wait for the command to finish (If we don't do this, we get wierd
- Previous message: [Mplayer-cvslog] CVS: main Makefile,1.200,1.201 configure,1.546,1.547 dll_init.c,1.45,1.46 find_sub.c,1.7,1.8 xacodec.c,1.32,1.33
- Next message: [Mplayer-cvslog] CVS: main cfg-common.h,1.52,1.53 cfgparser.c,1.51,1.52 cfgparser.h,1.14,1.15
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the MPlayer-cvslog
mailing list