summaryrefslogtreecommitdiffstats
path: root/graphics/libGL/files-old/patch-src__gbm__backends__dri__driver_name.c
blob: ac73872f94ff95d9f970bb33a3e973e6a7f22bc1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
--- ./src/gbm/backends/dri/driver_name.c.orig   2014-02-03 18:42:39.000000000 +0100
+++ ./src/gbm/backends/dri/driver_name.c    2014-02-15 21:11:55.000000000 +0100
@@ -29,7 +29,12 @@
 #include <stdio.h>
 #include <string.h>
 
+#if defined(HAVE_LIBUDEV)
 #include <libudev.h>
+#elif defined(HAVE_LIBDEVQ)
+#include <libdevq.h>
+#include <stdlib.h>
+#endif
 
 #include "gbm_driint.h"
 #define DRIVER_MAP_DRI2_ONLY
@@ -38,10 +43,12 @@
 char *
 dri_fd_get_driver_name(int fd)
 {
+   char *driver = NULL;
+
+#if defined(HAVE_LIBUDEV)
    struct udev *udev;
    struct udev_device *device, *parent;
    const char *pci_id;
-   char *driver = NULL;
    int vendor_id, chip_id, i, j;
 
    udev = udev_new();
@@ -84,6 +91,23 @@
 out:
    udev_device_unref(device);
    udev_unref(udev);
+#elif defined(HAVE_LIBDEVQ)
+   int ret;
+   size_t driver_len;
+
+   ret = devq_device_drm_get_drvname_from_fd(fd, NULL, &driver_len);
+   if (ret < 0)
+      return (NULL);
+
+   driver = malloc(driver_len + 1);
+   ret = devq_device_drm_get_drvname_from_fd(fd, driver, &driver_len);
+   if (ret < 0) {
+      free(driver);
+      return (NULL);
+   }
+
+   driver[driver_len] = '\0';
+#endif
 
    return driver;
 }