pipe-loader: Add auth_x parameter to pipe_loader_drm_probe_fd()
authorTom Stellard <thomas.stellard@amd.com>
Mon, 27 Jan 2014 15:34:16 +0000 (10:34 -0500)
committerTom Stellard <thomas.stellard@amd.com>
Fri, 14 Feb 2014 00:53:15 +0000 (19:53 -0500)
The caller can use this boolean parameter to tell the pipe-loader
to authenticate with the X server when probing a file descriptor.

src/gallium/auxiliary/pipe-loader/pipe_loader.h
src/gallium/auxiliary/pipe-loader/pipe_loader_drm.c
src/gallium/targets/gbm/gbm.c

index e0525dfbe02a1b27675d75ae0f46c04c8f812bdd..006401150da808dd6013f7fb484f5bd1441015fa 100644 (file)
@@ -128,9 +128,13 @@ pipe_loader_drm_probe(struct pipe_loader_device **devs, int ndev);
  * This function is platform-specific.
  *
  * \sa pipe_loader_probe
+ *
+ * \param auth_x If true, the pipe-loader will attempt to
+ *               authenticate with the X server.
  */
 boolean
-pipe_loader_drm_probe_fd(struct pipe_loader_device **dev, int fd);
+pipe_loader_drm_probe_fd(struct pipe_loader_device **dev, int fd,
+                         boolean auth_x);
 
 #endif
 
index 597a9b5a3d8c3c445d45b360ea9bbc51447651b4..7abdec334280f913fd1c8b4a7932df30e5c6e034 100644 (file)
@@ -112,7 +112,8 @@ disconnect:
 }
 
 boolean
-pipe_loader_drm_probe_fd(struct pipe_loader_device **dev, int fd)
+pipe_loader_drm_probe_fd(struct pipe_loader_device **dev, int fd,
+                         boolean auth_x)
 {
    struct pipe_loader_drm_device *ddev = CALLOC_STRUCT(pipe_loader_drm_device);
    int vendor_id, chip_id;
@@ -127,7 +128,8 @@ pipe_loader_drm_probe_fd(struct pipe_loader_device **dev, int fd)
    ddev->base.ops = &pipe_loader_drm_ops;
    ddev->fd = fd;
 
-   pipe_loader_drm_x_auth(fd);
+   if (auth_x)
+      pipe_loader_drm_x_auth(fd);
 
    ddev->base.driver_name = loader_get_driver_for_fd(fd, _LOADER_GALLIUM);
    if (!ddev->base.driver_name)
@@ -159,7 +161,7 @@ pipe_loader_drm_probe(struct pipe_loader_device **devs, int ndev)
       if (fd < 0)
          continue;
 
-      if (j >= ndev || !pipe_loader_drm_probe_fd(&devs[j], fd))
+      if (j >= ndev || !pipe_loader_drm_probe_fd(&devs[j], fd, true))
          close(fd);
 
       j++;
index 8f460573b56fcec1fbc8905ced258840621a2f1c..deaa401ad115641f86d9d258a54223d567b3ea5c 100644 (file)
@@ -52,7 +52,7 @@ gallium_screen_create(struct gbm_gallium_drm_device *gdrm)
 #ifdef HAVE_PIPE_LOADER_DRM
    int ret;
 
-   ret = pipe_loader_drm_probe_fd(&dev, gdrm->base.base.fd);
+   ret = pipe_loader_drm_probe_fd(&dev, gdrm->base.base.fd, true);
    if (!ret)
       return -1;
 #endif /* HAVE_PIPE_LOADER_DRM */