diff options
Diffstat (limited to 'video/out/x11_common.c')
-rw-r--r-- | video/out/x11_common.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/video/out/x11_common.c b/video/out/x11_common.c index 0aa49a4257..62d66fd730 100644 --- a/video/out/x11_common.c +++ b/video/out/x11_common.c @@ -37,6 +37,7 @@ #include "vo.h" #include "win_state.h" +#include "osdep/atomics.h" #include "osdep/timer.h" #include "osdep/subprocess.h" @@ -125,6 +126,7 @@ static const char x11_icon[] = ; static struct mp_log *x11_error_output; +static atomic_int x11_error_silence; static void vo_x11_update_geometry(struct vo *vo); static void vo_x11_fullscreen(struct vo *vo); @@ -262,8 +264,11 @@ static void vo_set_cursor_hidden(struct vo *vo, bool cursor_hidden) static int x11_errorhandler(Display *display, XErrorEvent *event) { struct mp_log *log = x11_error_output; - char msg[60]; + if (atomic_load(&x11_error_silence)) + return 0; + + char msg[60]; XGetErrorText(display, event->error_code, (char *) &msg, sizeof(msg)); mp_err(log, "X11 error: %s\n", msg); @@ -276,6 +281,11 @@ static int x11_errorhandler(Display *display, XErrorEvent *event) return 0; } +void vo_x11_silence_xlib(int dir) +{ + atomic_fetch_add(&x11_error_silence, dir); +} + static int net_wm_support_state_test(struct vo_x11_state *x11, Atom atom) { #define NET_WM_STATE_TEST(x) { \ |