Skip to content

Instantly share code, notes, and snippets.

@kraftwerk28
Created April 19, 2022 07:57
Show Gist options
  • Save kraftwerk28/d827d453a5cae56ef75c667cbc49f036 to your computer and use it in GitHub Desktop.
Save kraftwerk28/d827d453a5cae56ef75c667cbc49f036 to your computer and use it in GitHub Desktop.
#include <signal.h>
#include <stdbool.h>
#include <stdio.h>
#include <wayland-client.h>
#include <wayland-server.h>
static struct wl_display *display = NULL;
static struct wl_event_loop *loop = NULL;
static bool running = true;
int wl_event_loop_fd_func(int fd, uint32_t mask, void *data) {
// ?
return 0;
}
int wl_event_loop_signal_func(int signal_number, void *data) {
printf("\nCaught signal\n");
running = false;
return 0;
}
int wl_event_loop_timer_func(void *data) {
printf("Timed out\n");
running = false;
return 0;
}
int main(int argc, char *argv[]) {
display = wl_display_connect(NULL);
loop = wl_event_loop_create();
struct wl_event_source *fd_src = wl_event_loop_add_fd(
loop, wl_display_get_fd(display), WL_EVENT_READABLE | WL_EVENT_WRITABLE,
wl_event_loop_fd_func, NULL);
struct wl_event_source *sig_src =
wl_event_loop_add_signal(loop, SIGINT, wl_event_loop_signal_func, NULL);
struct wl_event_source *timer_src =
wl_event_loop_add_timer(loop, wl_event_loop_timer_func, NULL);
wl_event_source_timer_update(timer_src, 2000);
wl_display_roundtrip(display);
while (wl_event_loop_dispatch(loop, -1) >= 0 && running) {
}
wl_event_source_remove(fd_src);
wl_event_source_remove(sig_src);
wl_event_source_remove(timer_src);
wl_event_loop_destroy(loop);
wl_display_disconnect(display);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment