diff options
author | Gwenole Beauchesne <gb.devel@gmail.com> | 2012-07-26 16:26:37 +0200 |
---|---|---|
committer | Gwenole Beauchesne <gwenole.beauchesne@intel.com> | 2012-09-28 15:58:42 +0200 |
commit | 93c326b26ab87f5445a814d462882bb8f224a9ba (patch) | |
tree | 7926e5fdceeba67484aab056fd7f1bc37ee2be5b | |
parent | ff185cd4c3b4281db107fa6c9c421f2fd5ba67cb (diff) | |
download | libva-93c326b26ab87f5445a814d462882bb8f224a9ba.tar.gz |
glx: fix gl_create_context() with parent context set.
If GLX window was created from a foreign Display, then that same Display shall
be used for subsequent glXMakeCurrent(). This means that gl_create_context()
will now use the same Display that the parent, if available.
This fixes cluttersink with the Intel GenX VA driver.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
-rw-r--r-- | va/glx/va_glx_impl.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/va/glx/va_glx_impl.c b/va/glx/va_glx_impl.c index 049be09..f317961 100644 --- a/va/glx/va_glx_impl.c +++ b/va/glx/va_glx_impl.c @@ -340,8 +340,14 @@ gl_create_context(VADriverContextP ctx, OpenGLContextStateP parent) if (!cs) goto error; - cs->display = ctx->native_dpy; - cs->window = parent ? parent->window : None; + if (parent) { + cs->display = parent->display; + cs->window = parent->window; + } + else { + cs->display = ctx->native_dpy; + cs->window = None; + } cs->context = NULL; if (parent && parent->context) { @@ -357,8 +363,8 @@ gl_create_context(VADriverContextP ctx, OpenGLContextStateP parent) goto choose_fbconfig; fbconfigs = glXGetFBConfigs( - ctx->native_dpy, - ctx->x11_screen, + parent->display, + DefaultScreen(parent->display), &n_fbconfigs ); if (!fbconfigs) @@ -367,7 +373,7 @@ gl_create_context(VADriverContextP ctx, OpenGLContextStateP parent) /* Find out a GLXFBConfig compatible with the parent context */ for (n = 0; n < n_fbconfigs; n++) { status = glXGetFBConfigAttrib( - ctx->native_dpy, + cs->display, fbconfigs[n], GLX_FBCONFIG_ID, &val ); @@ -392,7 +398,7 @@ gl_create_context(VADriverContextP ctx, OpenGLContextStateP parent) } cs->context = glXCreateNewContext( - ctx->native_dpy, + cs->display, fbconfigs[n], GLX_RGBA_TYPE, parent ? parent->context : NULL, |