aboutsummaryrefslogtreecommitdiff
path: root/registry.c
blob: df415806aa7e14a03263d459ac2ce59ac6e5b06f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <stdio.h>
#include <string.h>

#include "./state.h"
#include "wayland.h"

struct wl_registry_listener registry_listener;

void setup_registry_and_globals(client_state* state) {
	state->registry = wl_display_get_registry(state->display);
	wl_registry_add_listener(state->registry, &registry_listener, state);
}

// listeners

void global(void *data, struct wl_registry *wl_registry, uint32_t name, const char *interface, uint32_t version) {
	client_state* state = data;

	if (state->verbose) {
		fprintf(stderr, "iface: %s v%d\n", interface, version);
	}

	if (!strcmp(interface, wl_compositor_interface.name)) {
		state->compositor = wl_registry_bind(wl_registry, name, &wl_compositor_interface, 1);
	}
	else if (!strcmp(interface, wl_seat_interface.name)) {
		state->seat = wl_registry_bind(wl_registry, name, &wl_seat_interface, 4);
	}
	else if (!strcmp(interface, zwlr_layer_shell_v1_interface.name)) {
		state->layer_shell = wl_registry_bind(wl_registry, name, &zwlr_layer_shell_v1_interface, 5);
	}
	else if (!strcmp(interface, wp_cursor_shape_manager_v1_interface.name)) {
		state->cursor_shape_manager = wl_registry_bind( wl_registry, name, &wp_cursor_shape_manager_v1_interface, 1);
	}
	else if (!strcmp(interface, wl_data_device_manager_interface.name)) {
		state->data_device_manager = wl_registry_bind(wl_registry, name, &wl_data_device_manager_interface, 3);
	}
	else {
	}

}

void global_remove(void *data, struct wl_registry *wl_registry, uint32_t name) {

}

struct wl_registry_listener registry_listener = {
	.global = global,
	.global_remove = global_remove,
};