aboutsummaryrefslogtreecommitdiff
path: root/examples/simpletest
diff options
context:
space:
mode:
authorKenny Levinsen <kl@kl.wtf>2020-07-31 00:22:18 +0200
committerKenny Levinsen <kl@kl.wtf>2020-07-31 00:22:18 +0200
commit61716a2c77dfde9addf6b41a6d72d26a8584150e (patch)
tree537cd84661955497bdb304f88896e36896df4e5f /examples/simpletest
parentf85434de666f10da0cbcaccdbb7d88917c5fa887 (diff)
Initial implementation of seatd and libseat
Diffstat (limited to 'examples/simpletest')
-rw-r--r--examples/simpletest/main.c60
1 files changed, 60 insertions, 0 deletions
diff --git a/examples/simpletest/main.c b/examples/simpletest/main.c
new file mode 100644
index 0000000..cd2e243
--- /dev/null
+++ b/examples/simpletest/main.c
@@ -0,0 +1,60 @@
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "libseat.h"
+
+static void handle_enable(struct libseat *backend, void *data) {
+ (void)backend;
+ int *active = (int *)data;
+ (*active)++;
+}
+
+static void handle_disable(struct libseat *backend, void *data) {
+ (void)backend;
+ int *active = (int *)data;
+ (*active)--;
+
+ libseat_disable_seat(backend);
+}
+
+int main(int argc, char *argv[]) {
+ (void)argc;
+ (void)argv;
+
+ int active = 0;
+ struct libseat_seat_listener listener = {
+ .enable_seat = handle_enable,
+ .disable_seat = handle_disable,
+ };
+ struct libseat *backend = libseat_open_seat(&listener, &active);
+ fprintf(stderr, "libseat_open_seat(listener: %p, userdata: %p) = %p\n", (void *)&listener,
+ (void *)&active, (void *)backend);
+ if (backend == NULL) {
+ fprintf(stderr, "libseat_open_seat() failed: %s\n", strerror(errno));
+ return -1;
+ }
+
+ while (active == 0) {
+ fprintf(stderr, "waiting for activation...\n");
+ libseat_dispatch(backend, -1);
+ }
+ fprintf(stderr, "active!\n");
+
+ int fd, device;
+ device = libseat_open_device(backend, "/dev/dri/card0", &fd);
+ fprintf(stderr, "libseat_open_device(backend: %p, path: %s, fd: %p) = %d\n",
+ (void *)backend, "/dev/dri/card0", (void *)&fd, device);
+ if (device == -1) {
+ fprintf(stderr, "libseat_open_device() failed: %s\n", strerror(errno));
+ libseat_close_seat(backend);
+ return 1;
+ }
+
+ close(fd);
+ libseat_close_device(backend, device);
+ libseat_close_seat(backend);
+ return 0;
+}