aboutsummaryrefslogtreecommitdiff
path: root/common/drm.c
diff options
context:
space:
mode:
authorKenny Levinsen <kl@kl.wtf>2020-09-22 00:49:04 +0200
committerKenny Levinsen <kl@kl.wtf>2020-09-22 01:01:46 +0200
commita763e16f26529323cd23a84a53f8d03431133d91 (patch)
tree8fff9f9bb36dbc0e93df64caf5fd517ef2f4bbd4 /common/drm.c
parent6da52fff236c612ffdb803a8d1ede40398c6d070 (diff)
drm: Relax drm file detection, support FreeBSD
Path check was done on /dev/dri/card and /dev/dri/renderD. However, /dev/dri/by-path is a thing, and on FreeBSD, /dev/dri/ symlinks to /dev/drm/. Relax Linux check to /dev/dri/, and add FreeBSD check for /dev/drm/.
Diffstat (limited to 'common/drm.c')
-rw-r--r--common/drm.c24
1 files changed, 11 insertions, 13 deletions
diff --git a/common/drm.c b/common/drm.c
index 8be2c62..897028c 100644
--- a/common/drm.c
+++ b/common/drm.c
@@ -24,24 +24,22 @@ int drm_drop_master(int fd) {
return ioctl(fd, DRM_IOCTL_DROP_MASTER, 0);
}
-static int path_is_drm_card(const char *path) {
- static const char prefix[] = "/dev/dri/card";
- static const int prefixlen = STRLEN(prefix);
- return strncmp(prefix, path, prefixlen) == 0;
-}
-
-static int path_is_drm_render(const char *path) {
- static const char prefix[] = "/dev/dri/renderD";
+#if defined(__linux__)
+int path_is_drm(const char *path) {
+ static const char prefix[] = "/dev/dri/";
static const int prefixlen = STRLEN(prefix);
return strncmp(prefix, path, prefixlen) == 0;
}
-int path_is_drm(const char *path) {
- return path_is_drm_card(path) || path_is_drm_render(path);
-}
-
-#if defined(__linux__)
int dev_is_drm(dev_t device) {
return major(device) == 226;
}
+#elif defined(__FreeBSD__)
+int path_is_drm(const char *path) {
+ static const char prefix[] = "/dev/drm/";
+ static const int prefixlen = STRLEN(prefix);
+ return strncmp(prefix, path, prefixlen) == 0;
+}
+#else
+#error Unsupported platform
#endif