aboutsummaryrefslogtreecommitdiff
path: root/session/session.c
diff options
context:
space:
mode:
authorScott Anderson <ascent12@hotmail.com>2017-05-03 14:11:22 +1200
committerScott Anderson <ascent12@hotmail.com>2017-05-03 14:11:22 +1200
commit762ac7f4c0168bf2ce536d94b3b44cb95939d769 (patch)
treec650e2e8dc13fc24695a4d95ca41f2f18df0b0aa /session/session.c
parente446a5300b742dd8a7f403bf96d1137e91ba1b11 (diff)
New session interface.
Diffstat (limited to 'session/session.c')
-rw-r--r--session/session.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/session/session.c b/session/session.c
new file mode 100644
index 00000000..88391e6e
--- /dev/null
+++ b/session/session.c
@@ -0,0 +1,38 @@
+#include <stddef.h>
+
+#include <wlr/session.h>
+#include "session/interface.h"
+
+static const struct session_interface *ifaces[] = {
+#ifdef HAS_SYSTEMD
+ &session_logind_iface,
+#endif
+ NULL,
+};
+
+struct wlr_session *wlr_session_start(void) {
+ const struct session_interface **iter;
+
+ for (iter = ifaces; *iter; ++iter) {
+ struct wlr_session *session = (*iter)->start();
+ if (session) {
+ return session;
+ }
+ }
+
+ return NULL;
+}
+
+void wlr_session_finish(struct wlr_session *session) {
+ session->iface.finish(session);
+};
+
+int wlr_session_open_file(struct wlr_session *restrict session,
+ const char *restrict path) {
+
+ return session->iface.open(session, path);
+}
+
+void wlr_session_close_file(struct wlr_session *session, int fd) {
+ session->iface.close(session, fd);
+}