aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/client/window.h1
-rw-r--r--wayland/window.c10
2 files changed, 8 insertions, 3 deletions
diff --git a/include/client/window.h b/include/client/window.h
index eff9032d..e48ec4f3 100644
--- a/include/client/window.h
+++ b/include/client/window.h
@@ -42,5 +42,6 @@ struct window *window_setup(struct registry *registry, uint32_t width, uint32_t
void window_teardown(struct window *state);
int window_prerender(struct window *state);
int window_render(struct window *state);
+void window_make_shell(struct window *window);
#endif
diff --git a/wayland/window.c b/wayland/window.c
index ba64cb60..7ca9e4ec 100644
--- a/wayland/window.c
+++ b/wayland/window.c
@@ -59,6 +59,12 @@ static const struct wl_shell_surface_listener surface_listener = {
.configure = shell_surface_configure
};
+void window_make_shell(struct window *window) {
+ window->shell_surface = wl_shell_get_shell_surface(window->registry->shell, window->surface);
+ wl_shell_surface_add_listener(window->shell_surface, &surface_listener, window);
+ wl_shell_surface_set_toplevel(window->shell_surface);
+}
+
struct window *window_setup(struct registry *registry, uint32_t width, uint32_t height, bool shell_surface) {
struct window *window = malloc(sizeof(struct window));
memset(window, 0, sizeof(struct window));
@@ -69,9 +75,7 @@ struct window *window_setup(struct registry *registry, uint32_t width, uint32_t
window->surface = wl_compositor_create_surface(registry->compositor);
if (shell_surface) {
- window->shell_surface = wl_shell_get_shell_surface(registry->shell, window->surface);
- wl_shell_surface_add_listener(window->shell_surface, &surface_listener, window);
- wl_shell_surface_set_toplevel(window->shell_surface);
+ window_make_shell(window);
}
if (registry->pointer) {
wl_pointer_add_listener(registry->pointer, &pointer_listener, window);