aboutsummaryrefslogtreecommitdiff
path: root/backend/session/direct-freebsd.c
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2018-09-18 14:44:46 -0400
committerGitHub <noreply@github.com>2018-09-18 14:44:46 -0400
commit3693fae0c44d83cab2c701bd44b80d8f6242781e (patch)
tree407d120898ff0a4c64de9a2d180ad07bd0d67e36 /backend/session/direct-freebsd.c
parent9288c827aaf4ae8acac7a105f223dc612822b76d (diff)
parent139a905924e9c6cd22613dfbbe73c4642c993e41 (diff)
Merge pull request #1248 from emersion/assert-all-the-things
Assert all the things!
Diffstat (limited to 'backend/session/direct-freebsd.c')
-rw-r--r--backend/session/direct-freebsd.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/backend/session/direct-freebsd.c b/backend/session/direct-freebsd.c
index cecfb0c1..bce1c871 100644
--- a/backend/session/direct-freebsd.c
+++ b/backend/session/direct-freebsd.c
@@ -1,3 +1,4 @@
+#include <assert.h>
#include <dev/evdev/input.h>
#include <errno.h>
#include <fcntl.h>
@@ -32,8 +33,14 @@ struct direct_session {
struct wl_event_source *vt_source;
};
+static struct direct_session *direct_session_from_session(
+ struct wlr_session *base) {
+ assert(base->impl == &session_direct);
+ return (struct direct_session *)base;
+}
+
static int direct_session_open(struct wlr_session *base, const char *path) {
- struct direct_session *session = wl_container_of(base, session, base);
+ struct direct_session *session = direct_session_from_session(base);
int fd = direct_ipc_open(session->sock, path);
if (fd < 0) {
@@ -46,7 +53,7 @@ static int direct_session_open(struct wlr_session *base, const char *path) {
}
static void direct_session_close(struct wlr_session *base, int fd) {
- struct direct_session *session = wl_container_of(base, session, base);
+ struct direct_session *session = direct_session_from_session(base);
int ev;
struct drm_version dv = {0};
@@ -60,12 +67,12 @@ static void direct_session_close(struct wlr_session *base, int fd) {
}
static bool direct_change_vt(struct wlr_session *base, unsigned vt) {
- struct direct_session *session = wl_container_of(base, session, base);
+ struct direct_session *session = direct_session_from_session(base);
return ioctl(session->tty_fd, VT_ACTIVATE, (int)vt) == 0;
}
static void direct_session_destroy(struct wlr_session *base) {
- struct direct_session *session = wl_container_of(base, session, base);
+ struct direct_session *session = direct_session_from_session(base);
struct vt_mode mode = {
.mode = VT_AUTO,
};
@@ -157,7 +164,8 @@ static bool setup_tty(struct direct_session *session, struct wl_display *display
}
if (ioctl(fd, KDSKBMODE, K_CODE)) {
- wlr_log_errno(WLR_ERROR, "Failed to set keyboard mode K_CODE on tty %d", tty);
+ wlr_log_errno(WLR_ERROR,
+ "Failed to set keyboard mode K_CODE on tty %d", tty);
goto error;
}