summaryrefslogtreecommitdiffstats
path: root/video/out/x11_common.c
diff options
context:
space:
mode:
Diffstat (limited to 'video/out/x11_common.c')
-rw-r--r--video/out/x11_common.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/video/out/x11_common.c b/video/out/x11_common.c
index 0aa49a4257..0fd5db0ca3 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);
@@ -263,19 +265,23 @@ static int x11_errorhandler(Display *display, XErrorEvent *event)
{
struct mp_log *log = x11_error_output;
char msg[60];
-
XGetErrorText(display, event->error_code, (char *) &msg, sizeof(msg));
- mp_err(log, "X11 error: %s\n", msg);
-
- mp_verbose(log, "Type: %x, display: %p, resourceid: %lx, serial: %lx\n",
+ int lev = atomic_load(&x11_error_silence) ? MSGL_V : MSGL_ERR;
+ mp_msg(log, lev, "X11 error: %s\n", msg);
+ mp_msg(log, lev, "Type: %x, display: %p, resourceid: %lx, serial: %lx\n",
event->type, event->display, event->resourceid, event->serial);
- mp_verbose(log, "Error code: %x, request code: %x, minor code: %x\n",
- event->error_code, event->request_code, event->minor_code);
+ mp_msg(log, lev, "Error code: %x, request code: %x, minor code: %x\n",
+ event->error_code, event->request_code, event->minor_code);
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) { \