drm: Make dev_is_drm local to logind backend
This function is only used for logind, which is Linux-specific, but the presence in common/drm.c suggested that it had to be portable. Move it to the logind backend for now.
This commit is contained in:
parent
0462e9331d
commit
8f8c9558e6
3 changed files with 11 additions and 31 deletions
25
common/drm.c
25
common/drm.c
|
@ -2,15 +2,6 @@
|
||||||
#include <sys/ioctl.h>
|
#include <sys/ioctl.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
||||||
#if defined(__linux__)
|
|
||||||
#include <sys/sysmacros.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__NetBSD__)
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "drm.h"
|
#include "drm.h"
|
||||||
|
|
||||||
// From libdrm
|
// From libdrm
|
||||||
|
@ -29,32 +20,18 @@ int drm_drop_master(int fd) {
|
||||||
return ioctl(fd, DRM_IOCTL_DROP_MASTER, 0);
|
return ioctl(fd, DRM_IOCTL_DROP_MASTER, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(__linux__)
|
#if defined(__linux__) || defined(__NetBSD__)
|
||||||
int path_is_drm(const char *path) {
|
int path_is_drm(const char *path) {
|
||||||
static const char prefix[] = "/dev/dri/";
|
static const char prefix[] = "/dev/dri/";
|
||||||
static const int prefixlen = STRLEN(prefix);
|
static const int prefixlen = STRLEN(prefix);
|
||||||
return strncmp(prefix, path, prefixlen) == 0;
|
return strncmp(prefix, path, prefixlen) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int dev_is_drm(dev_t device) {
|
|
||||||
return major(device) == 226;
|
|
||||||
}
|
|
||||||
#elif defined(__FreeBSD__)
|
#elif defined(__FreeBSD__)
|
||||||
int path_is_drm(const char *path) {
|
int path_is_drm(const char *path) {
|
||||||
static const char prefix[] = "/dev/drm/";
|
static const char prefix[] = "/dev/drm/";
|
||||||
static const int prefixlen = STRLEN(prefix);
|
static const int prefixlen = STRLEN(prefix);
|
||||||
return strncmp(prefix, path, prefixlen) == 0;
|
return strncmp(prefix, path, prefixlen) == 0;
|
||||||
}
|
}
|
||||||
#elif defined(__NetBSD__)
|
|
||||||
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 dev_is_drm(dev_t device) {
|
|
||||||
return major(device) == getdevmajor("drm", S_IFCHR);
|
|
||||||
}
|
|
||||||
#else
|
#else
|
||||||
#error Unsupported platform
|
#error Unsupported platform
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -5,9 +5,4 @@ int drm_set_master(int fd);
|
||||||
int drm_drop_master(int fd);
|
int drm_drop_master(int fd);
|
||||||
int path_is_drm(const char *path);
|
int path_is_drm(const char *path);
|
||||||
|
|
||||||
#if defined(__linux__) || defined(__NetBSD__)
|
|
||||||
#include <sys/types.h>
|
|
||||||
int dev_is_drm(dev_t device);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -28,6 +28,14 @@
|
||||||
#include "libseat.h"
|
#include "libseat.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
||||||
|
static int dev_major_is_drm(unsigned int dev_major) {
|
||||||
|
return dev_major == 226;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int dev_is_drm(dev_t device) {
|
||||||
|
return dev_major_is_drm(major(device));
|
||||||
|
}
|
||||||
|
|
||||||
struct backend_logind {
|
struct backend_logind {
|
||||||
struct libseat base;
|
struct libseat base;
|
||||||
const struct libseat_seat_listener *seat_listener;
|
const struct libseat_seat_listener *seat_listener;
|
||||||
|
@ -387,7 +395,7 @@ static int pause_device(sd_bus_message *msg, void *userdata, sd_bus_error *ret_e
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dev_is_drm(makedev(major, minor)) && strcmp(type, "gone") != 0) {
|
if (dev_major_is_drm(major) && strcmp(type, "gone") != 0) {
|
||||||
log_debugf("DRM device paused: %s", type);
|
log_debugf("DRM device paused: %s", type);
|
||||||
assert(session->has_drm > 0);
|
assert(session->has_drm > 0);
|
||||||
set_active(session, false);
|
set_active(session, false);
|
||||||
|
@ -419,7 +427,7 @@ static int resume_device(sd_bus_message *msg, void *userdata, sd_bus_error *ret_
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dev_is_drm(makedev(major, minor))) {
|
if (dev_major_is_drm(major)) {
|
||||||
log_debug("DRM device resumed");
|
log_debug("DRM device resumed");
|
||||||
assert(session->has_drm > 0);
|
assert(session->has_drm > 0);
|
||||||
set_active(session, true);
|
set_active(session, true);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue