summaryrefslogtreecommitdiff
path: root/lib/renderers/wayland/wayland.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/renderers/wayland/wayland.c')
-rw-r--r--lib/renderers/wayland/wayland.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/lib/renderers/wayland/wayland.c b/lib/renderers/wayland/wayland.c
index dd97009..a719c7d 100644
--- a/lib/renderers/wayland/wayland.c
+++ b/lib/renderers/wayland/wayland.c
@@ -25,6 +25,13 @@ render(const struct bm_menu *menu)
return;
}
+ struct window *window;
+ wl_list_for_each(window, &wayland->windows, link) {
+ if (window->render_pending)
+ bm_wl_window_render(window, wayland->display, menu);
+ }
+ wl_display_flush(wayland->display);
+
struct epoll_event ep[16];
uint32_t num = epoll_wait(efd, ep, 16, -1);
for (uint32_t i = 0; i < num; ++i) {
@@ -38,10 +45,10 @@ render(const struct bm_menu *menu)
}
if (wayland->input.code != wayland->input.last_code) {
- struct window *window;
- wl_list_for_each(window, &wayland->windows, link) {
- bm_wl_window_render(window, wayland->display, menu);
+ wl_list_for_each(window, &wayland->windows, link) {
+ bm_wl_window_schedule_render(window);
}
+
wayland->input.last_code = wayland->input.code;
}
}
@@ -263,6 +270,7 @@ constructor(struct bm_menu *menu)
goto fail;
window->notify.render = bm_cairo_paint;
window->max_height = output->height;
+ window->render_pending = true;
wl_list_insert(&wayland->windows, &window->link);
}