Merge remote-tracking branch 'origin/master' into pipe-video
[mesa.git] / src / gallium / state_trackers / egl / x11 / x11_screen.c
index bc6482ab15da9e06c855c0a27d051649cf615366..f1cc4400ba5b402faeda2858787efb02f9d722dc 100644 (file)
 #include "glxinit.h"
 
 struct x11_screen {
-#ifdef GLX_DIRECT_RENDERING
-   /* dummy base class */
-   struct __GLXDRIdisplayRec base;
-#endif
-
    Display *dpy;
    int number;
 
@@ -108,7 +103,7 @@ x11_screen_destroy(struct x11_screen *xscr)
 #ifdef GLX_DIRECT_RENDERING
    /* xscr->glx_dpy will be destroyed with the X display */
    if (xscr->glx_dpy)
-      xscr->glx_dpy->dri2Display = NULL;
+      xscr->glx_dpy->xscr = NULL;
 #endif
 
    if (xscr->visuals)
@@ -230,17 +225,6 @@ x11_screen_get_glx_configs(struct x11_screen *xscr)
       : NULL;
 }
 
-/**
- * Return the GLX visuals.
- */
-const __GLcontextModes *
-x11_screen_get_glx_visuals(struct x11_screen *xscr)
-{
-   return (x11_screen_init_glx(xscr))
-      ? xscr->glx_dpy->screenConfigs[xscr->number]->visuals
-      : NULL;
-}
-
 /**
  * Probe the screen for the DRI2 driver name.
  */
@@ -306,14 +290,14 @@ x11_screen_enable_dri2(struct x11_screen *xscr,
          close(fd);
          return -1;
       }
-      if (xscr->glx_dpy->dri2Display) {
+      if (xscr->glx_dpy->xscr) {
          _eglLog(_EGL_WARNING,
                "display is already managed by another x11 screen");
          close(fd);
          return -1;
       }
 
-      xscr->glx_dpy->dri2Display = (__GLXDRIdisplay *) xscr;
+      xscr->glx_dpy->xscr = xscr;
       xscr->dri_invalidate_buffers = invalidate_buffers;
       xscr->dri_user_data = user_data;
 
@@ -323,6 +307,23 @@ x11_screen_enable_dri2(struct x11_screen *xscr,
    return xscr->dri_fd;
 }
 
+char *
+x11_screen_get_device_name(struct x11_screen *xscr)
+{
+   return xscr->dri_device;
+}
+
+int
+x11_screen_authenticate(struct x11_screen *xscr, uint32_t id)
+{
+   boolean authenticated;
+
+   authenticated = DRI2Authenticate(xscr->dpy,
+         RootWindow(xscr->dpy, xscr->number), id);
+   
+   return authenticated ? 0 : -1;
+}
+
 /**
  * Create/Destroy the DRI drawable.
  */
@@ -428,6 +429,9 @@ x11_context_modes_count(const __GLcontextModes *modes)
    return count;
 }
 
+extern void
+dri2InvalidateBuffers(Display *dpy, XID drawable);
+
 /**
  * This is called from src/glx/dri2.c.
  */
@@ -437,12 +441,23 @@ dri2InvalidateBuffers(Display *dpy, XID drawable)
    __GLXdisplayPrivate *priv = __glXInitialize(dpy);
    struct x11_screen *xscr = NULL;
 
-   if (priv && priv->dri2Display)
-      xscr = (struct x11_screen *) priv->dri2Display;
+   if (priv && priv->xscr)
+      xscr = priv->xscr;
    if (!xscr || !xscr->dri_invalidate_buffers)
       return;
 
    xscr->dri_invalidate_buffers(xscr, drawable, xscr->dri_user_data);
 }
 
+extern unsigned
+dri2GetSwapEventType(Display *dpy, XID drawable);
+
+/**
+ * This is also called from src/glx/dri2.c.
+ */
+unsigned dri2GetSwapEventType(Display *dpy, XID drawable)
+{
+   return 0;
+}
+
 #endif /* GLX_DIRECT_RENDERING */