1 #include <stdio.h>
2 #include <string.h>
3 #include <wayland-client.h>
4 #include <screen-info-client-protocol.h>
5
6 struct display {
7 struct wl_display *display;
8 struct wl_registry *registry;
9 struct screen_info_module* lm;
10 };
11
12 static int running = 1;
13
lminfo(void * data,struct screen_info_module * lm,uint32_t number)14 void lminfo(void *data, struct screen_info_module *lm, uint32_t number)
15 {
16 printf("lminfo: %d\n", number);
17 running = 0;
18 }
19
20 struct screen_info_module_listener lmlistener = {lminfo};
21
22 static void
registry_handle_global(void * data,struct wl_registry * registry,uint32_t id,const char * interface,uint32_t version)23 registry_handle_global(void *data, struct wl_registry *registry,
24 uint32_t id, const char *interface, uint32_t version)
25 {
26 struct display *d = data;
27
28 if (strcmp(interface, "screen_info_module") == 0) {
29 d->lm = wl_registry_bind(registry, id, &screen_info_module_interface, 1);
30 screen_info_module_add_listener(d->lm, &lmlistener, d);
31 screen_info_module_get(d->lm);
32 }
33 }
34
35 static void
registry_handle_global_remove(void * a,struct wl_registry * b,uint32_t c)36 registry_handle_global_remove(void *a, struct wl_registry *b, uint32_t c)
37 {
38 }
39
40 static const struct wl_registry_listener registry_listener = {
41 registry_handle_global,
42 registry_handle_global_remove
43 };
44
45 int
main(int argc,char ** argv)46 main(int argc, char **argv)
47 {
48 int ret = 0;
49 struct display d;
50
51 d.display = wl_display_connect(NULL);
52 if (!d.display) {
53 printf("wl_display_connect failed\n");
54 return 1;
55 }
56
57 d.registry = wl_display_get_registry(d.display);
58 wl_registry_add_listener(d.registry, ®istry_listener, &d);
59 wl_display_roundtrip(d.display);
60 wl_display_roundtrip(d.display);
61
62 while (running && ret != -1)
63 ret = wl_display_dispatch(d.display);
64
65 if (d.lm)
66 screen_info_module_destroy(d.lm);
67
68 wl_registry_destroy(d.registry);
69 wl_display_flush(d.display);
70 wl_display_disconnect(d.display);
71 return 0;
72 }
73