Mercurial > mplayer.hg
changeset 9161:cedace61d1ad
-fixed-vo vs. panscan vs. 'f' vs. -fs fix
patch by Jindrich Makovicka <makovick@kmlinux.fjfi.cvut.cz>
author | arpi |
---|---|
date | Wed, 29 Jan 2003 20:25:01 +0000 |
parents | 2a67f587c792 |
children | 9e4380713991 |
files | libvo/vo_xv.c |
diffstat | 1 files changed, 25 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/libvo/vo_xv.c Wed Jan 29 17:23:23 2003 +0000 +++ b/libvo/vo_xv.c Wed Jan 29 20:25:01 2003 +0000 @@ -385,10 +385,17 @@ #ifdef HAVE_XINERAMA vo_x11_xinerama_move(mDisplay,vo_window); #endif - } else - if ( !(flags&1) ) XMoveResizeWindow( mDisplay,vo_window,hint.x,hint.y,hint.width,hint.height ); - - vo_x11_sizehint( hint.x, hint.y, hint.width, hint.height,0 ); + vo_x11_sizehint( hint.x, hint.y, hint.width, hint.height,0 ); + } else { + // vo_fs set means we were already at fullscreen + vo_x11_sizehint( hint.x, hint.y, hint.width, hint.height,0 ); + if ( !vo_fs ) XMoveResizeWindow( mDisplay,vo_window,hint.x,hint.y,hint.width,hint.height ); + if ( flags&1 && !vo_fs ) vo_x11_fullscreen(); // handle -fs on non-first file + } + +// vo_x11_sizehint( hint.x, hint.y, hint.width, hint.height,0 ); + + printf("\n!!!!!! %d;%d %dx%d \n",hint.x,hint.y,hint.width,hint.height); if ( vo_gc != None ) XFreeGC( mDisplay,vo_gc ); vo_gc = XCreateGC(mDisplay, vo_window, 0L, &xgcv); @@ -434,7 +441,7 @@ #endif aspect(&vo_dwidth,&vo_dheight,A_NOZOOM); - if ( ( flags&1 )&&( WinID <= 0 ) ) + if ( (( flags&1 )&&( WinID <= 0 )) || vo_fs ) { aspect(&vo_dwidth,&vo_dheight,A_ZOOM); drwX=( vo_screenwidth - (vo_dwidth > vo_screenwidth?vo_screenwidth:vo_dwidth) ) / 2; @@ -445,6 +452,19 @@ } panscan_calc(); + XClearWindow(mDisplay, vo_window); +#ifdef HAVE_SHM + if ( Shmem_Flag ) + { + XvShmPutImage(mDisplay, xv_port, vo_window, vo_gc, xvimage[current_buf], 0, 0, image_width, image_height, drwX, drwY, 1, 1, False); + XvShmPutImage(mDisplay, xv_port, vo_window, vo_gc, xvimage[current_buf], 0, 0, image_width, image_height, drwX,drwY,vo_dwidth,(vo_fs?vo_dheight - 1:vo_dheight), False); + } + else +#endif + { + XvPutImage(mDisplay, xv_port, vo_window, vo_gc, xvimage[current_buf], 0, 0, image_width, image_height, drwX, drwY, 1, 1); + XvPutImage(mDisplay, xv_port, vo_window, vo_gc, xvimage[current_buf], 0, 0, image_width, image_height, drwX,drwY,vo_dwidth,(vo_fs?vo_dheight - 1:vo_dheight)); + } mp_msg(MSGT_VO,MSGL_V, "[xv] dx: %d dy: %d dw: %d dh: %d\n",drwX,drwY,vo_dwidth,vo_dheight );