# HG changeset patch # User reimar # Date 1119119549 0 # Node ID f75ba7f7b7b248e5901ca39f96ce0fb56aa17a4c # Parent fbf14e1ab725013b791a9519e417afc07ad5ea7c support -wid diff -r fbf14e1ab725 -r f75ba7f7b7b2 ChangeLog --- 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 diff -r fbf14e1ab725 -r f75ba7f7b7b2 libvo/vo_gl.c --- 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); diff -r fbf14e1ab725 -r f75ba7f7b7b2 libvo/vo_gl2.c --- 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);