summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--video/out/opengl/x11.c4
-rw-r--r--video/out/x11_common.c12
-rw-r--r--video/out/x11_common.h2
3 files changed, 16 insertions, 2 deletions
diff --git a/video/out/opengl/x11.c b/video/out/opengl/x11.c
index 4d7efbac90..16d674c802 100644
--- a/video/out/opengl/x11.c
+++ b/video/out/opengl/x11.c
@@ -112,11 +112,13 @@ static bool create_context_x11_gl3(struct MPGLContext *ctx, int vo_flags,
GLX_CONTEXT_FLAGS_ARB, ctx_flags,
None
};
+ vo_x11_silence_xlib(1);
GLXContext context = glXCreateContextAttribsARB(vo->x11->display,
glx_ctx->fbc, 0, True,
context_attribs);
+ vo_x11_silence_xlib(-1);
if (!context) {
- MP_INFO(vo, "Could not create GL3 context. Retrying with legacy context.\n");
+ MP_VERBOSE(vo, "Could not create GL3 context. Retrying with legacy context.\n");
return false;
}
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) { \
diff --git a/video/out/x11_common.h b/video/out/x11_common.h
index a25b8e2cca..7707c0a707 100644
--- a/video/out/x11_common.h
+++ b/video/out/x11_common.h
@@ -130,4 +130,6 @@ bool vo_x11_create_vo_window(struct vo *vo, XVisualInfo *vis,
void vo_x11_config_vo_window(struct vo *vo);
int vo_x11_control(struct vo *vo, int *events, int request, void *arg);
+void vo_x11_silence_xlib(int dir);
+
#endif /* MPLAYER_X11_COMMON_H */