From 61716a2c77dfde9addf6b41a6d72d26a8584150e Mon Sep 17 00:00:00 2001 From: Kenny Levinsen Date: Fri, 31 Jul 2020 00:22:18 +0200 Subject: Initial implementation of seatd and libseat --- examples/simpletest/main.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 examples/simpletest/main.c (limited to 'examples/simpletest') 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 +#include +#include +#include +#include + +#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; +} -- cgit v1.2.3