diff options
| author | Kenny Levinsen <kl@kl.wtf> | 2022-03-29 10:46:09 +0200 | 
|---|---|---|
| committer | Kenny Levinsen <kl@kl.wtf> | 2022-03-29 10:54:27 +0200 | 
| commit | 8f8c9558e6279060f3ccc3363cb3558ffc9efd84 (patch) | |
| tree | 3d402edeb726cb9dfab894cc0b27bc3283e9fb09 | |
| parent | 0462e9331d1648171bd47e62a2808f0a4d647239 (diff) | |
| download | seatd-8f8c9558e6279060f3ccc3363cb3558ffc9efd84.tar.xz | |
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.
| -rw-r--r-- | common/drm.c | 25 | ||||
| -rw-r--r-- | include/drm.h | 5 | ||||
| -rw-r--r-- | libseat/backend/logind.c | 12 | 
3 files changed, 11 insertions, 31 deletions
diff --git a/common/drm.c b/common/drm.c index 0d8096a..45ed7e5 100644 --- a/common/drm.c +++ b/common/drm.c @@ -2,15 +2,6 @@  #include <sys/ioctl.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"  // From libdrm @@ -29,32 +20,18 @@ int drm_drop_master(int fd) {  	return ioctl(fd, DRM_IOCTL_DROP_MASTER, 0);  } -#if defined(__linux__) +#if defined(__linux__) || 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) == 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;  } -#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  #error Unsupported platform  #endif diff --git a/include/drm.h b/include/drm.h index c8c3eeb..a8a5461 100644 --- a/include/drm.h +++ b/include/drm.h @@ -5,9 +5,4 @@ int drm_set_master(int fd);  int drm_drop_master(int fd);  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 diff --git a/libseat/backend/logind.c b/libseat/backend/logind.c index 53523c8..2589e2f 100644 --- a/libseat/backend/logind.c +++ b/libseat/backend/logind.c @@ -28,6 +28,14 @@  #include "libseat.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 libseat base;  	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;  	} -	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);  		assert(session->has_drm > 0);  		set_active(session, false); @@ -419,7 +427,7 @@ static int resume_device(sd_bus_message *msg, void *userdata, sd_bus_error *ret_  		return 0;  	} -	if (dev_is_drm(makedev(major, minor))) { +	if (dev_major_is_drm(major)) {  		log_debug("DRM device resumed");  		assert(session->has_drm > 0);  		set_active(session, true);  | 
