vl: drop left-over variable
[mesa.git] / src / gallium / auxiliary / vl / vl_winsys_drm.c
index 2ebf20c4bd3dc12eddee9fc4b7752d49134e304f..9014b97bdfda0404c96a06d92f0e6bf361fb63ca 100644 (file)
 #include "util/u_memory.h"
 #include "vl/vl_winsys.h"
 
-struct vl_screen*
+static void
+vl_drm_screen_destroy(struct vl_screen *vscreen);
+
+struct vl_screen *
 vl_drm_screen_create(int fd)
 {
    struct vl_screen *vscreen;
@@ -43,21 +46,11 @@ vl_drm_screen_create(int fd)
    if (!vscreen)
       return NULL;
 
-#if GALLIUM_STATIC_TARGETS
-   vscreen->pscreen = dd_create_screen(fd);
-#else
-   if (pipe_loader_drm_probe_fd(&vscreen->dev, dup(fd))) {
-      vscreen->pscreen =
-         pipe_loader_create_screen(vscreen->dev, PIPE_SEARCH_DIR);
-      if (!vscreen->pscreen)
-         pipe_loader_release(&vscreen->dev, 1);
-   }
-#endif
+   if (pipe_loader_drm_probe_fd(&vscreen->dev, fd))
+      vscreen->pscreen = pipe_loader_create_screen(vscreen->dev);
 
-   if (!vscreen->pscreen) {
-      FREE(vscreen);
-      return NULL;
-   }
+   if (!vscreen->pscreen)
+      goto release_pipe;
 
    vscreen->destroy = vl_drm_screen_destroy;
    vscreen->texture_from_drawable = NULL;
@@ -66,18 +59,22 @@ vl_drm_screen_create(int fd)
    vscreen->set_next_timestamp = NULL;
    vscreen->get_private = NULL;
    return vscreen;
+
+release_pipe:
+   if (vscreen->dev)
+      pipe_loader_release(&vscreen->dev, 1);
+
+   FREE(vscreen);
+   return NULL;
 }
 
-void
+static void
 vl_drm_screen_destroy(struct vl_screen *vscreen)
 {
    assert(vscreen);
 
    vscreen->pscreen->destroy(vscreen->pscreen);
-
-#if !GALLIUM_STATIC_TARGETS
    pipe_loader_release(&vscreen->dev, 1);
-#endif
-
+   /* CHECK: The VAAPI loader/user preserves ownership of the original fd */
    FREE(vscreen);
 }