From 9a0238bb524668c3ea24465943cd231167ae1428 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Fri, 3 Jan 2020 13:37:03 +0100 Subject: [PATCH] wayland: window now keeps pointer to owning terminal, not wayland --- terminal.c | 2 +- wayland.c | 12 +++++++----- wayland.h | 4 ++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/terminal.c b/terminal.c index b31d3867..d1853c18 100644 --- a/terminal.c +++ b/terminal.c @@ -654,7 +654,7 @@ term_init(const struct config *conf, struct fdm *fdm, struct wayland *wayl, goto err; /* Initialize the Wayland window backend */ - if ((term->window = wayl_win_init(wayl)) == NULL) + if ((term->window = wayl_win_init(term)) == NULL) goto err; /* Let the Wayland backend know we exist */ diff --git a/wayland.c b/wayland.c index 415d8292..18db638a 100644 --- a/wayland.c +++ b/wayland.c @@ -825,10 +825,12 @@ wayl_destroy(struct wayland *wayl) } struct wl_window * -wayl_win_init(struct wayland *wayl) +wayl_win_init(struct terminal *term) { + struct wayland *wayl = term->wl; + struct wl_window *win = calloc(1, sizeof(*win)); - win->wayl = wayl; + win->term = term; win->surface = wl_compositor_create_surface(wayl->compositor); if (win->surface == NULL) { @@ -887,12 +889,12 @@ wayl_win_destroy(struct wl_window *win) /* Scrollback search */ wl_surface_attach(win->search_surface, NULL, 0, 0); wl_surface_commit(win->search_surface); - wl_display_roundtrip(win->wayl->display); + wl_display_roundtrip(win->term->wl->display); /* Main window */ wl_surface_attach(win->surface, NULL, 0, 0); wl_surface_commit(win->surface); - wl_display_roundtrip(win->wayl->display); + wl_display_roundtrip(win->term->wl->display); tll_free(win->on_outputs); if (win->search_sub_surface != NULL) @@ -910,7 +912,7 @@ wayl_win_destroy(struct wl_window *win) if (win->surface != NULL) wl_surface_destroy(win->surface); - wl_display_roundtrip(win->wayl->display); + wl_display_roundtrip(win->term->wl->display); free(win); } diff --git a/wayland.h b/wayland.h index dfdcfffd..b47bf0c3 100644 --- a/wayland.h +++ b/wayland.h @@ -84,7 +84,7 @@ struct wl_primary { struct wayland; struct wl_window { - struct wayland *wayl; + struct terminal *term; struct wl_surface *surface; struct xdg_surface *xdg_surface; struct xdg_toplevel *xdg_toplevel; @@ -181,5 +181,5 @@ struct terminal *wayl_terminal_from_xdg_toplevel( /* TODO: pass something other than 'term'? Need scale... */ bool wayl_cursor_set(struct wayland *wayl, const struct terminal *term); -struct wl_window *wayl_win_init(struct wayland *wayl); +struct wl_window *wayl_win_init(struct terminal *term); void wayl_win_destroy(struct wl_window *win);