5 void registry_listener_callback(void* data, struct wl_registry* registry, uint32_t id, const char* interface, uint32_t version)
7 if (0 == strcmp(interface, "wl_compositor"))
9 wl_compositor** compositor = reinterpret_cast<wl_compositor**>(data);
10 *compositor = reinterpret_cast<wl_compositor*>(wl_registry_bind(registry, id, &wl_compositor_interface, 1));
18 wlDisplay = wl_display_connect(NULL);
21 throw std::runtime_error("could not connect to wayland display");
23 wlRegistry = wl_display_get_registry(wlDisplay);
25 static const struct wl_registry_listener registry_listener = {
26 registry_listener_callback,
30 wl_registry_add_listener(wlRegistry, ®istry_listener, &wlCompositor);
31 wl_display_dispatch(wlDisplay);
32 wl_display_roundtrip(wlDisplay);
34 wlSurfaces.reserve(10);
35 for (int i = 0; i < wlSurfaces.capacity(); ++i)
37 wlSurfaces.push_back(wl_compositor_create_surface(wlCompositor));
43 for (std::vector<wl_surface *>::reverse_iterator it = wlSurfaces.rbegin();
44 it != wlSurfaces.rend();
47 wl_surface_destroy(*it);
50 wl_compositor_destroy(wlCompositor);
51 wl_registry_destroy(wlRegistry);
52 wl_display_disconnect(wlDisplay);