diff options
author | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2008-11-19 20:19:25 +0000 |
---|---|---|
committer | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2008-11-19 20:19:25 +0000 |
commit | c351d29392df4d69c7beae0ba41878e6335e3614 (patch) | |
tree | 3ddfa5ab9beca381a36da9384c750eb0832a5983 /libvo/x11_common.c | |
parent | 928e4433aa62badaa8578cf8247ea0cbf06e3204 (diff) | |
download | mpv-c351d29392df4d69c7beae0ba41878e6335e3614.tar.bz2 mpv-c351d29392df4d69c7beae0ba41878e6335e3614.tar.xz |
Factor common code like -wid handling, vo_gc creation etc. out into
x11_common.c
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27961 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libvo/x11_common.c')
-rw-r--r-- | libvo/x11_common.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/libvo/x11_common.c b/libvo/x11_common.c index af603c3e2c..883ada7715 100644 --- a/libvo/x11_common.c +++ b/libvo/x11_common.c @@ -1269,6 +1269,23 @@ void vo_x11_create_vo_window(XVisualInfo *vis, int x, int y, Colormap col_map, const char *classname, const char *title) { + XGCValues xgcv; + if (WinID >= 0) { + vo_window = WinID ? (Window)WinID : mRootWin; + if (col_map != CopyFromParent) { + unsigned long xswamask = CWColormap; + XSetWindowAttributes xswa; + xswa.colormap = col_map; + XUnmapWindow(mDisplay, vo_window); + XChangeWindowAttributes(mDisplay, vo_window, xswamask, &xswa); + XMapWindow(mDisplay, vo_window); + } + if (WinID) vo_x11_update_geometry(); + vo_x11_selectinput_witherr(mDisplay, vo_window, + StructureNotifyMask | KeyPressMask | PointerMotionMask | + ButtonPressMask | ButtonReleaseMask | ExposureMask); + goto final; + } if (vo_window == None) { XSizeHints hint; XEvent xev; @@ -1304,6 +1321,12 @@ void vo_x11_create_vo_window(XVisualInfo *vis, int x, int y, vo_x11_nofs_sizepos(vo_dx, vo_dy, width, height); if (!!vo_fs != !!(flags & VOFLAG_FULLSCREEN)) vo_x11_fullscreen(); +final: + if (vo_gc != None) + XFreeGC(mDisplay, vo_gc); + vo_gc = XCreateGC(mDisplay, vo_window, GCForeground, &xgcv); + XSync(mDisplay, False); + vo_mouse_autohide = 1; } void vo_x11_clearwindow_part(Display * mDisplay, Window vo_window, |