From 1e7867610c80347f7aa2e4e3dba63a205df9e2b2 Mon Sep 17 00:00:00 2001 From: illiliti Date: Mon, 14 Mar 2022 00:09:37 +0300 Subject: [PATCH] backend/session: share is_drm_card implementation --- backend/session/dev.c | 21 +++++++++++++++++++++ backend/session/dev_demi.c | 15 --------------- backend/session/dev_udev.c | 13 ------------- backend/session/meson.build | 2 +- include/backend/session/dev.h | 3 +++ 5 files changed, 25 insertions(+), 29 deletions(-) create mode 100644 backend/session/dev.c diff --git a/backend/session/dev.c b/backend/session/dev.c new file mode 100644 index 000000000..96236dcbb --- /dev/null +++ b/backend/session/dev.c @@ -0,0 +1,21 @@ +#define _POSIX_C_SOURCE 200809L +#include +#include +#include +#include "backend/session/dev.h" + +// TODO move to util? +bool is_drm_card(const char *devname) { + const char prefix[] = DRM_PRIMARY_MINOR_NAME; + const char *name = strrchr(devname, '/'); + name = name ? name + 1 : devname; + if (strncmp(name, prefix, strlen(prefix)) != 0) { + return false; + } + for (size_t i = strlen(prefix); name[i] != '\0'; i++) { + if (name[i] < '0' || name[i] > '9') { + return false; + } + } + return true; +} diff --git a/backend/session/dev_demi.c b/backend/session/dev_demi.c index a10b0243d..9a5fed70f 100644 --- a/backend/session/dev_demi.c +++ b/backend/session/dev_demi.c @@ -18,21 +18,6 @@ #include "backend/session/dev_demi.h" #include "util/signal.h" -static bool is_drm_card(const char *devname) { - const char prefix[] = DRM_PRIMARY_MINOR_NAME; - const char *name = strrchr(devname); - name = name ? name + 1 : devname; - if (strncmp(name, prefix, strlen(prefix)) != 0) { - return false; - } - for (size_t i = strlen(prefix); name[i] != '\0'; i++) { - if (name[i] < '0' || name[i] > '9') { - return false; - } - } - return true; -} - static int handle_event(int fd, uint32_t mask, void *data) { struct wlr_session *session = data; diff --git a/backend/session/dev_udev.c b/backend/session/dev_udev.c index 338e43b57..c1cf304ff 100644 --- a/backend/session/dev_udev.c +++ b/backend/session/dev_udev.c @@ -20,19 +20,6 @@ #define WAIT_GPU_TIMEOUT 10000 // ms -static bool is_drm_card(const char *sysname) { - const char prefix[] = DRM_PRIMARY_MINOR_NAME; - if (strncmp(sysname, prefix, strlen(prefix)) != 0) { - return false; - } - for (size_t i = strlen(prefix); sysname[i] != '\0'; i++) { - if (sysname[i] < '0' || sysname[i] > '9') { - return false; - } - } - return true; -} - static void read_udev_change_event(struct wlr_device_change_event *event, struct udev_device *udev_dev) { const char *hotplug = udev_device_get_property_value(udev_dev, "HOTPLUG"); diff --git a/backend/session/meson.build b/backend/session/meson.build index d62784d2b..39fd94125 100644 --- a/backend/session/meson.build +++ b/backend/session/meson.build @@ -3,7 +3,7 @@ libseat = dependency('libseat', fallback: 'seatd', default_options: ['server=disabled', 'man-pages=disabled'], ) -wlr_files += files('session.c') +wlr_files += files('session.c', 'dev.c') wlr_deps += libseat # libudev & libdemi diff --git a/include/backend/session/dev.h b/include/backend/session/dev.h index 56aae36e1..bae6c14a9 100644 --- a/include/backend/session/dev.h +++ b/include/backend/session/dev.h @@ -1,3 +1,4 @@ +#include #include #include #include @@ -10,4 +11,6 @@ void dev_finish(struct wlr_session *session); ssize_t dev_find_gpus(struct wlr_session *session, size_t ret_len, struct wlr_device **ret); + +bool is_drm_card(const char *devname); #endif