# HG changeset patch # User reimar # Date 1226771155 0 # Node ID 9829cfa41d6d69e91c99a839defbf30517af6869 # Parent ad43c827bf24a269ce888f10c8d94b9d6c9c3b66 Replace some of the different inconsistent XGetGeometry uses by a vo_x11_update_geometry function. diff -r ad43c827bf24 -r 9829cfa41d6d libvo/gl_common.c --- a/libvo/gl_common.c Sat Nov 15 17:41:30 2008 +0000 +++ b/libvo/gl_common.c Sat Nov 15 17:45:55 2008 +0000 @@ -1607,13 +1607,7 @@ // set new values vo_window = win; - { - Window root; - int tmp; - unsigned utmp; - XGetGeometry(mDisplay, vo_window, &root, &tmp, &tmp, - (unsigned *)&vo_dwidth, (unsigned *)&vo_dheight, &utmp, &utmp); - } + vo_x11_update_geometry(); if (!keep_context) { void *(*getProcAddress)(const GLubyte *); const char *(*glXExtStr)(Display *, int); diff -r ad43c827bf24 -r 9829cfa41d6d libvo/vo_x11.c --- a/libvo/vo_x11.c Sat Nov 15 17:41:30 2008 +0000 +++ b/libvo/vo_x11.c Sat Nov 15 17:45:55 2008 +0000 @@ -430,9 +430,7 @@ ButtonReleaseMask | ExposureMask); XMapWindow(mDisplay, vo_window); - XGetGeometry(mDisplay, vo_window, &mRootWin, - &vo_dx, &vo_dy, &vo_dwidth, &vo_dheight, - &border, &depth); + depth = vo_x11_update_geometry(); } else XSelectInput(mDisplay, vo_window, ExposureMask); } else diff -r ad43c827bf24 -r 9829cfa41d6d libvo/vo_xv.c --- a/libvo/vo_xv.c Sat Nov 15 17:41:30 2008 +0000 +++ b/libvo/vo_xv.c Sat Nov 15 17:45:55 2008 +0000 @@ -290,11 +290,7 @@ ButtonReleaseMask | ExposureMask); XMapWindow(mDisplay, vo_window); - XGetGeometry(mDisplay, vo_window, &mRoot, - &drwX, &drwY, &vo_dwidth, &vo_dheight, - &drwBorderWidth, &drwDepth); - if (vo_dwidth <= 0) vo_dwidth = d_width; - if (vo_dheight <= 0) vo_dheight = d_height; + vo_x11_update_geometry(); aspect_save_prescale(vo_dwidth, vo_dheight); } } else diff -r ad43c827bf24 -r 9829cfa41d6d libvo/x11_common.c --- a/libvo/x11_common.c Sat Nov 15 17:41:30 2008 +0000 +++ b/libvo/x11_common.c Sat Nov 15 17:45:55 2008 +0000 @@ -1040,25 +1040,7 @@ // if (vo_fs && Event.xconfigure.width != vo_screenwidth && Event.xconfigure.height != vo_screenheight) break; if (vo_window == None) break; - vo_dwidth = Event.xconfigure.width; - vo_dheight = Event.xconfigure.height; -#if 0 - /* when resizing, x and y are zero :( */ - vo_dx = Event.xconfigure.x; - vo_dy = Event.xconfigure.y; -#else - { - Window root; - int foo; - Window win; - - XGetGeometry(mydisplay, vo_window, &root, &foo, &foo, - &foo /*width */ , &foo /*height */ , &foo, - &foo); - XTranslateCoordinates(mydisplay, vo_window, root, 0, 0, - &vo_dx, &vo_dy, &win); - } -#endif + vo_x11_update_geometry(); ret |= VO_EVENT_RESIZE; break; case KeyPress: @@ -1496,6 +1478,22 @@ return type; } +/** + * \brief update vo_dx, vo_dy, vo_dwidth and vo_dheight with current values of vo_window + * \return returns current color depth of vo_window + */ +int vo_x11_update_geometry(void) { + unsigned depth, w, h; + int dummy_int; + Window dummy_win; + XGetGeometry(mDisplay, vo_window, &dummy_win, &dummy_int, &dummy_int, + &w, &h, &dummy_int, &depth); + if (w <= INT_MAX && h <= INT_MAX) { vo_dwidth = w; vo_dheight = h; } + XTranslateCoordinates(mDisplay, vo_window, mRootWin, 0, 0, &vo_dx, &vo_dy, + &dummy_win); + return depth <= INT_MAX ? depth : 0; +} + void vo_x11_fullscreen(void) { int x, y, w, h; diff -r ad43c827bf24 -r 9829cfa41d6d libvo/x11_common.h --- a/libvo/x11_common.h Sat Nov 15 17:41:30 2008 +0000 +++ b/libvo/x11_common.h Sat Nov 15 17:45:55 2008 +0000 @@ -50,6 +50,7 @@ extern void vo_x11_sizehint( int x, int y, int width, int height, int max ); extern int vo_x11_check_events(Display *mydisplay); extern void vo_x11_selectinput_witherr(Display *display, Window w, long event_mask); +int vo_x11_update_geometry(void); extern void vo_x11_fullscreen( void ); extern void vo_x11_setlayer( Display * mDisplay,Window vo_window,int layer ); extern void vo_x11_uninit(void);