summaryrefslogtreecommitdiffstats
path: root/video
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2014-02-06 14:33:30 +0100
committerwm4 <wm4@nowhere>2014-02-06 14:33:30 +0100
commit67769db1a4e3a765c5f770f44f8b2b041a0246a9 (patch)
treea52dcb904b8056489c762bb6b64d4e5c2125f4f4 /video
parent7134574f5304e20a83645b123cf70610344597e4 (diff)
downloadmpv-67769db1a4e3a765c5f770f44f8b2b041a0246a9.tar.bz2
mpv-67769db1a4e3a765c5f770f44f8b2b041a0246a9.tar.xz
gl_x11: don't require a X visual for modern GL context creation
Legacy GL context creation (glXCreateContext) explicitly requires a X visual, while the modern one (glXCreateContextAttribsARB) does not for some reason. So fail only on the legacy code path if we don't find a visual. Note that vo_x11_config_vo_window() will select a default visual if a NULL visual is passed to it.
Diffstat (limited to 'video')
-rw-r--r--video/out/gl_x11.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/video/out/gl_x11.c b/video/out/gl_x11.c
index d6191de1de..801e41e6d8 100644
--- a/video/out/gl_x11.c
+++ b/video/out/gl_x11.c
@@ -44,6 +44,11 @@ static bool create_context_x11_old(struct MPGLContext *ctx)
if (glx_ctx->context)
return true;
+ if (!glx_ctx->vinfo) {
+ MP_FATAL(vo, "Can't create a legacy GLX context without X visual\n");
+ return false;
+ }
+
GLXContext new_context = glXCreateContext(display, glx_ctx->vinfo, NULL,
True);
if (!new_context) {
@@ -254,12 +259,13 @@ static bool config_window_x11(struct MPGLContext *ctx, uint32_t d_width,
glx_ctx->fbc = fbc;
glx_ctx->vinfo = glXGetVisualFromFBConfig(vo->x11->display, fbc);
- if (!glx_ctx->vinfo) {
- MP_ERR(vo, "Selected GLX FB config has no associated X visual\n");
- return false;
+ if (glx_ctx->vinfo) {
+ MP_VERBOSE(vo, "GLX chose visual with ID 0x%x\n",
+ (int)glx_ctx->vinfo->visualid);
+ } else {
+ MP_WARN(vo, "Selected GLX FB config has no associated X visual\n");
}
- MP_VERBOSE(vo, "GLX chose visual with ID 0x%x\n", (int)glx_ctx->vinfo->visualid);
glXGetFBConfigAttrib(vo->x11->display, fbc, GLX_RED_SIZE, &ctx->depth_r);
glXGetFBConfigAttrib(vo->x11->display, fbc, GLX_GREEN_SIZE, &ctx->depth_g);