aboutsummaryrefslogtreecommitdiff
path: root/src/window/wayland.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/window/wayland.c')
-rw-r--r--src/window/wayland.c24
1 files changed, 11 insertions, 13 deletions
diff --git a/src/window/wayland.c b/src/window/wayland.c
index 7e319fb..b7907be 100644
--- a/src/window/wayland.c
+++ b/src/window/wayland.c
@@ -26,11 +26,11 @@ typedef struct {
} gsr_wayland_output;
struct gsr_window_wayland {
- void *display;
- void *window;
- void *registry;
- void *surface;
- void *compositor;
+ struct wl_display *display;
+ struct wl_egl_window *window;
+ struct wl_registry *registry;
+ struct wl_surface *surface;
+ struct wl_compositor *compositor;
gsr_wayland_output outputs[GSR_MAX_OUTPUTS];
int num_outputs;
struct zxdg_output_manager_v1 *xdg_output_manager;
@@ -101,10 +101,9 @@ static void registry_add_object(void *data, struct wl_registry *registry, uint32
(void)version;
gsr_window_wayland *window_wayland = data;
if(strcmp(interface, "wl_compositor") == 0) {
- if(window_wayland->compositor) {
- wl_compositor_destroy(window_wayland->compositor);
- window_wayland->compositor = NULL;
- }
+ if(window_wayland->compositor)
+ return;
+
window_wayland->compositor = wl_registry_bind(registry, name, &wl_compositor_interface, 1);
} else if(strcmp(interface, wl_output_interface.name) == 0) {
if(version < 4) {
@@ -134,10 +133,9 @@ static void registry_add_object(void *data, struct wl_registry *registry, uint32
return;
}
- if(window_wayland->xdg_output_manager) {
- zxdg_output_manager_v1_destroy(window_wayland->xdg_output_manager);
- window_wayland->xdg_output_manager = NULL;
- }
+ if(window_wayland->xdg_output_manager)
+ return;
+
window_wayland->xdg_output_manager = wl_registry_bind(registry, name, &zxdg_output_manager_v1_interface, 1);
}
}