diff options
Diffstat (limited to 'backend/session/noop.c')
-rw-r--r-- | backend/session/noop.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/backend/session/noop.c b/backend/session/noop.c new file mode 100644 index 00000000..87ec1207 --- /dev/null +++ b/backend/session/noop.c @@ -0,0 +1,48 @@ +#define _POSIX_C_SOURCE 200809L +#include <fcntl.h> +#include <stdbool.h> +#include <stdlib.h> +#include <unistd.h> +#include <wayland-server.h> +#include <wlr/backend/session/interface.h> +#include <wlr/util/log.h> +#include "util/signal.h" + +const struct session_impl session_noop; + +static int noop_session_open(struct wlr_session *base, const char *path) { + return open(path, O_RDWR | O_CLOEXEC); +} + +static void noop_session_close(struct wlr_session *base, int fd) { + close(fd); +} + +static bool noop_change_vt(struct wlr_session *base, unsigned vt) { + return false; +} + +static void noop_session_destroy(struct wlr_session *base) { + free(base); +} + +static struct wlr_session *noop_session_create(struct wl_display *disp) { + struct wlr_session *session = calloc(1, sizeof(*session)); + if (!session) { + wlr_log_errno(WLR_ERROR, "Allocation failed"); + return NULL; + } + + session->impl = &session_noop; + + wlr_log(WLR_INFO, "Successfully initialized noop session"); + return session; +} + +const struct session_impl session_noop = { + .create = noop_session_create, + .destroy = noop_session_destroy, + .open = noop_session_open, + .close = noop_session_close, + .change_vt = noop_change_vt, +}; |