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 );