aboutsummaryrefslogtreecommitdiff
path: root/rootston
diff options
context:
space:
mode:
Diffstat (limited to 'rootston')
-rw-r--r--rootston/output.c3
-rw-r--r--rootston/xdg_shell.c6
-rw-r--r--rootston/xdg_shell_v6.c6
3 files changed, 10 insertions, 5 deletions
diff --git a/rootston/output.c b/rootston/output.c
index 4146e3e2..1284c928 100644
--- a/rootston/output.c
+++ b/rootston/output.c
@@ -479,7 +479,7 @@ static void render_output(struct roots_output *output) {
goto damage_finish;
}
- wlr_renderer_begin(renderer, wlr_output);
+ wlr_renderer_begin(renderer, wlr_output->width, wlr_output->height);
if (!pixman_region32_not_empty(&damage)) {
// Output isn't damaged but needs buffer swap
@@ -680,6 +680,7 @@ static void damage_from_surface(struct wlr_surface *surface,
}
pixman_region32_translate(&damage, box.x, box.y);
wlr_output_damage_add(output->damage, &damage);
+ pixman_region32_fini(&damage);
} else {
pixman_box32_t *extents =
pixman_region32_extents(&surface->current->surface_damage);
diff --git a/rootston/xdg_shell.c b/rootston/xdg_shell.c
index 851c0045..099e622c 100644
--- a/rootston/xdg_shell.c
+++ b/rootston/xdg_shell.c
@@ -177,9 +177,11 @@ static void set_fullscreen(struct roots_view *view, bool fullscreen) {
static void close(struct roots_view *view) {
assert(view->type == ROOTS_XDG_SHELL_VIEW);
struct wlr_xdg_surface *surface = view->xdg_surface;
- if (surface->role == WLR_XDG_SURFACE_ROLE_TOPLEVEL) {
- wlr_xdg_toplevel_send_close(surface);
+ struct wlr_xdg_popup *popup = NULL;
+ wl_list_for_each(popup, &surface->popups, link) {
+ wlr_xdg_surface_send_close(popup->base);
}
+ wlr_xdg_surface_send_close(surface);
}
static void destroy(struct roots_view *view) {
diff --git a/rootston/xdg_shell_v6.c b/rootston/xdg_shell_v6.c
index 13d25331..001232ab 100644
--- a/rootston/xdg_shell_v6.c
+++ b/rootston/xdg_shell_v6.c
@@ -177,9 +177,11 @@ static void set_fullscreen(struct roots_view *view, bool fullscreen) {
static void close(struct roots_view *view) {
assert(view->type == ROOTS_XDG_SHELL_V6_VIEW);
struct wlr_xdg_surface_v6 *surface = view->xdg_surface_v6;
- if (surface->role == WLR_XDG_SURFACE_V6_ROLE_TOPLEVEL) {
- wlr_xdg_toplevel_v6_send_close(surface);
+ struct wlr_xdg_popup_v6 *popup = NULL;
+ wl_list_for_each(popup, &surface->popups, link) {
+ wlr_xdg_surface_v6_send_close(popup->base);
}
+ wlr_xdg_surface_v6_send_close(surface);
}
static void destroy(struct roots_view *view) {