changeset 7757:03c707b25fdc

-fixed-vo support, based on patch by .so :)
author arpi
date Wed, 16 Oct 2002 19:31:07 +0000
parents 77076fb29637
children 27b3b56fa8a5
files libvo/vo_xv.c
diffstat 1 files changed, 11 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/libvo/vo_xv.c	Wed Oct 16 19:26:30 2002 +0000
+++ b/libvo/vo_xv.c	Wed Oct 16 19:31:07 2002 +0000
@@ -1,3 +1,4 @@
+/* vo_xv.c, X11 Xv interface */
 
 // Number of buffers _FOR_DOUBLEBUFFERING_MODE_
 // Use option -double to enable double buffering! (default: single buffer)
@@ -15,21 +16,6 @@
   3: 2*STATIC+TEMP
 */
 
-
-/*
- * vo_xv.c, X11 Xv interface
- *
- * Copyright (C) 1996, MPEG Software Simulation Group. All Rights Reserved.
- *
- * Hacked into mpeg2dec by
- *
- * Aaron Holtzman <aholtzma@ess.engr.uvic.ca>
- *
- * Xv image suuport by Gerd Knorr <kraxel@goldbach.in-berlin.de>
- * fullscreen support by Pontscho
- * double buffering support by A'rpi
- */
-
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -258,6 +244,8 @@
     return(VO_FALSE);
 }
 
+static void deallocate_xvimage(int foo);
+
 /*
  * connect to server, create and map window,
  * allocate colors and (shared) memory
@@ -377,7 +365,7 @@
         XMapWindow( mDisplay,vo_window );
        } else { drwX=vo_dx; drwY=vo_dy; }
     } else 
-       {
+    if ( vo_window == None ){
         vo_window = XCreateWindow(mDisplay, mRootWin,
           hint.x, hint.y, hint.width, hint.height,
           0, depth,CopyFromParent,vinfo.visual,xswamask,&xswa);
@@ -396,7 +384,9 @@
 #ifdef HAVE_XINERAMA
 	vo_x11_xinerama_move(mDisplay,vo_window);
 #endif
-       }
+    } else 
+	XMoveResizeWindow( mDisplay,vo_window,hint.x,hint.y,hint.width,hint.height );
+
     vo_gc = XCreateGC(mDisplay, vo_window, 0L, &xgcv);
     XFlush(mDisplay);
     XSync(mDisplay, False);
@@ -425,6 +415,10 @@
 	default:   	  draw_alpha_fnc=draw_alpha_null;
        }
 
+      if ( vo_config_count )
+        for(current_buf=0;current_buf<num_buffers;++current_buf)
+         deallocate_xvimage(current_buf);
+
       for(current_buf=0;current_buf<num_buffers;++current_buf)
        allocate_xvimage(current_buf);