backend/session: introduce wlr_device_manager

This commit is contained in:
Simon Ser 2026-05-24 13:43:09 +02:00
parent 3bd8f29b13
commit e8b81b3d4a
7 changed files with 362 additions and 251 deletions

View file

@ -2,6 +2,7 @@
#define BACKEND_SESSION_SESSION_H
#include <stdbool.h>
#include <sys/types.h>
struct wl_display;
struct wlr_session;
@ -16,5 +17,22 @@ void session_init(struct wlr_session *session);
struct wlr_device *session_open_if_kms(struct wlr_session *restrict session,
const char *restrict path);
struct wlr_device *session_find_device_by_devid(struct wlr_session *session, dev_t devid);
struct wlr_device_manager {
struct wlr_session *session;
const struct wlr_device_manager_impl *impl;
};
struct wlr_device_manager_impl {
void (*destroy)(struct wlr_device_manager *manager);
ssize_t (*find_drm_cards)(struct wlr_device_manager *manager,
size_t ret_cap, struct wlr_device **ret);
};
void wlr_device_manager_init(struct wlr_device_manager *manager,
const struct wlr_device_manager_impl *impl, struct wlr_session *session);
void wlr_device_manager_finish(struct wlr_device_manager *manager);
#endif

View file

@ -0,0 +1,17 @@
#ifndef BACKEND_SESSION_UDEV_H
#define BACKEND_SESSION_UDEV_H
#include "backend/session/session.h"
struct wlr_udev_device_manager {
struct wlr_device_manager base;
struct udev *udev;
struct udev_monitor *mon;
struct wl_event_source *udev_event;
};
struct wlr_device_manager *wlr_udev_device_manager_create(struct wlr_session *session);
struct wlr_udev_device_manager *wlr_udev_device_manager_try_from_base(struct wlr_device_manager *base);
#endif

View file

@ -45,9 +45,7 @@ struct wlr_session {
char seat[256];
struct udev *udev;
struct udev_monitor *mon;
struct wl_event_source *udev_event;
struct wlr_device_manager *device_manager;
struct libseat *seat_handle;
struct wl_event_source *libseat_event;