summaryrefslogtreecommitdiffstats
path: root/libvo/x11_common.c
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-11-19 20:19:25 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2008-11-19 20:19:25 +0000
commitc351d29392df4d69c7beae0ba41878e6335e3614 (patch)
tree3ddfa5ab9beca381a36da9384c750eb0832a5983 /libvo/x11_common.c
parent928e4433aa62badaa8578cf8247ea0cbf06e3204 (diff)
downloadmpv-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.c23
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,