mirror of https://github.com/mpv-player/mpv
x11: do not accidentally discard event flags
It seems vo_x11_check_events() was supposed to return the currently flagged events and reset them. But there are many places where vo_x11_check_events() is called without checking its return value. This could lead to forgotten events. Change the code such that they can't get lost.
This commit is contained in:
parent
ebe798a333
commit
cb4342dda4
|
@ -1019,7 +1019,7 @@ static void vo_x11_check_net_wm_state_fullscreen_change(struct vo *vo)
|
|||
}
|
||||
}
|
||||
|
||||
int vo_x11_check_events(struct vo *vo)
|
||||
void vo_x11_check_events(struct vo *vo)
|
||||
{
|
||||
struct vo_x11_state *x11 = vo->x11;
|
||||
Display *display = vo->x11->display;
|
||||
|
@ -1178,9 +1178,6 @@ int vo_x11_check_events(struct vo *vo)
|
|||
}
|
||||
|
||||
update_vo_size(vo);
|
||||
int ret = x11->pending_vo_events;
|
||||
x11->pending_vo_events = 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void vo_x11_sizehint(struct vo *vo, struct mp_rect rc, bool override_pos)
|
||||
|
@ -1791,7 +1788,9 @@ int vo_x11_control(struct vo *vo, int *events, int request, void *arg)
|
|||
struct vo_x11_state *x11 = vo->x11;
|
||||
switch (request) {
|
||||
case VOCTRL_CHECK_EVENTS:
|
||||
*events |= vo_x11_check_events(vo);
|
||||
vo_x11_check_events(vo);
|
||||
*events |= x11->pending_vo_events;
|
||||
x11->pending_vo_events = 0;
|
||||
return VO_TRUE;
|
||||
case VOCTRL_FULLSCREEN:
|
||||
opts->fullscreen = !opts->fullscreen;
|
||||
|
|
|
@ -128,7 +128,7 @@ struct vo_x11_state {
|
|||
|
||||
int vo_x11_init(struct vo *vo);
|
||||
void vo_x11_uninit(struct vo *vo);
|
||||
int vo_x11_check_events(struct vo *vo);
|
||||
void vo_x11_check_events(struct vo *vo);
|
||||
bool vo_x11_screen_is_composited(struct vo *vo);
|
||||
bool vo_x11_create_vo_window(struct vo *vo, XVisualInfo *vis,
|
||||
const char *classname);
|
||||
|
|
Loading…
Reference in New Issue