diff options
Diffstat (limited to 'src/window/wayland.c')
-rw-r--r-- | src/window/wayland.c | 24 |
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); } } |