void *loaderPrivate)
{
struct dri3_drawable *pdraw = loaderPrivate;
- int buf_id = buffer_type == dri3_pixmap_buf_id(buffer_type);
+ int buf_id = dri3_pixmap_buf_id(buffer_type);
struct dri3_buffer *buffer = pdraw->buffers[buf_id];
Pixmap pixmap;
xcb_dri3_buffer_from_pixmap_cookie_t bp_cookie;
static struct glx_screen *
dri3_create_screen(int screen, struct glx_display * priv)
{
+ xcb_connection_t *c = XGetXCBConnection(priv->dpy);
const __DRIconfig **driver_configs;
const __DRIextension **extensions;
const struct dri3_display *const pdp = (struct dri3_display *)
psc->fd = dri3_open(priv->dpy, RootWindow(priv->dpy, screen), None);
if (psc->fd < 0) {
+ int conn_error = xcb_connection_has_error(c);
+
glx_screen_cleanup(&psc->base);
free(psc);
InfoMessageF("screen %d does not appear to be DRI3 capable\n", screen);
+
+ if (conn_error)
+ ErrorMessageF("Connection closed during DRI3 initialization failure");
+
return NULL;
}
deviceName = NULL;