mirror of
https://github.com/mpv-player/mpv
synced 2024-10-22 08:51:57 +02:00
Replace some of the different inconsistent XGetGeometry uses by a
vo_x11_update_geometry function. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27919 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
252f6d5093
commit
87bee02b19
@ -1607,13 +1607,7 @@ int setGlWindow(XVisualInfo **vinfo, GLXContext *context, Window win)
|
||||
|
||||
// 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);
|
||||
|
@ -430,9 +430,7 @@ static int config(uint32_t width, uint32_t height, uint32_t d_width,
|
||||
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
|
||||
|
@ -290,11 +290,7 @@ static int config(uint32_t width, uint32_t height, uint32_t d_width,
|
||||
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
|
||||
|
@ -1040,25 +1040,7 @@ int vo_x11_check_events(Display * mydisplay)
|
||||
// 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 @@ static int vo_x11_get_fs_type(int supported)
|
||||
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;
|
||||
|
@ -50,6 +50,7 @@ extern void vo_x11_nofs_sizepos(int x, int y, int width, int height);
|
||||
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);
|
||||
|
Loading…
Reference in New Issue
Block a user