changeset 15748:f75ba7f7b7b2

support -wid
author reimar
date Sat, 18 Jun 2005 18:32:29 +0000
parents fbf14e1ab725
children da8f4e7e4b95
files ChangeLog libvo/vo_gl.c libvo/vo_gl2.c
diffstat 3 files changed, 27 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Fri Jun 17 16:45:24 2005 +0000
+++ b/ChangeLog	Sat Jun 18 18:32:29 2005 +0000
@@ -10,7 +10,7 @@
 
     Driver:
     * JACK audio output rewritten without bio2jack
-    * OpenGL video output modules support -geometry option
+    * OpenGL video output modules support -geometry and -wid options
 
     Decoders:
     * Indeo2 (RT21) support via lavc
--- a/libvo/vo_gl.c	Fri Jun 17 16:45:24 2005 +0000
+++ b/libvo/vo_gl.c	Sat Jun 18 18:32:29 2005 +0000
@@ -72,6 +72,11 @@
 
 static void resize(int x,int y){
   mp_msg(MSGT_VO, MSGL_V, "[gl] Resize: %dx%d\n",x,y);
+  if (WinID >= 0) {
+    int top = 0, left = 0, w = x, h = y;
+    geometry(&top, &left, &w, &h, vo_screenwidth, vo_screenheight);
+    glViewport(top, left, w, h);
+  } else
   glViewport( 0, 0, x, y );
 
   glMatrixMode(GL_PROJECTION);
@@ -175,11 +180,15 @@
     vo_dwidth = d_width;
     vo_dheight= d_height;
     guiGetEvent(guiSetShVideo, 0);
-    setGlWindow(&gl_vinfo, &gl_context, vo_window);
-    initGl(vo_dwidth, vo_dheight);
-    return 0;
+    goto glconfig;
   }
 #endif
+  if (WinID >= 0) {
+    Window win_tmp;
+    int int_tmp;
+    vo_window = WinID ? (Window)WinID : mRootWin;
+    goto glconfig;
+  }
   if ( vo_window == None ) {
 	unsigned int fg, bg;
 	XSizeHints hint;
@@ -246,6 +255,8 @@
   vo_x11_nofs_sizepos(vo_dx, vo_dy, d_width, d_height);
   if (vo_fs ^ (flags & VOFLAG_FULLSCREEN))
     vo_x11_fullscreen();
+
+glconfig:
   setGlWindow(&gl_vinfo, &gl_context, vo_window);
   initGl(vo_dwidth, vo_dheight);
 
--- a/libvo/vo_gl2.c	Fri Jun 17 16:45:24 2005 +0000
+++ b/libvo/vo_gl2.c	Sat Jun 18 18:32:29 2005 +0000
@@ -577,6 +577,13 @@
 	  glViewport( (vo_screenwidth-*x)/2, (vo_screenheight-*y)/2, *x, *y);
   } else { 
 	  //aspect(x, y, A_NOZOOM);
+#ifndef GL_WIN32
+	if (WinID >= 0) {
+	  int top = 0, left = 0, w = *x, h = *y;
+	  geometry(&top, &left, &w, &h, vo_screenwidth, vo_screenheight);
+	  glViewport(top, left, w, h);
+	} else
+#endif
 	  glViewport( 0, 0, *x, *y );
   }
 
@@ -686,6 +693,10 @@
 }
 
 static int config_glx(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uint32_t flags, char *title, uint32_t format) {
+  if (WinID >= 0) {
+    vo_window = WinID ? (Window)WinID : mRootWin;
+    return 0;
+  }
   if ( vo_window == None ) 
   {
 	XSizeHints hint;
@@ -890,7 +901,7 @@
 			draw_alpha_fnc=draw_alpha_32; break;
   }
 
-  if (initGl(d_width, d_height) == -1)
+  if (initGl(vo_dwidth, vo_dheight) == -1)
       return -1;
 #ifndef GL_WIN32
       if (vo_ontop) vo_x11_setlayer(mDisplay,vo_window, vo_ontop);