diff options
author | Jari Vetoniemi <mailRoxas@gmail.com> | 2019-03-25 07:59:16 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-25 07:59:16 +0200 |
commit | 1be74a290f7ef9a0cc420ad98239c2f7dbb03165 (patch) | |
tree | c82dd19bad0e36bcf841c09c60125c02f65ccb8a /lib/renderers/wayland/wayland.c | |
parent | 33e540a2b04ce78f5c7ab4a60b899c67f586cc32 (diff) | |
parent | ab82afab7f8da81fbd6445a0b65fb70ecba898b8 (diff) | |
download | bemenu-1be74a290f7ef9a0cc420ad98239c2f7dbb03165.tar.gz bemenu-1be74a290f7ef9a0cc420ad98239c2f7dbb03165.tar.bz2 bemenu-1be74a290f7ef9a0cc420ad98239c2f7dbb03165.zip |
Merge pull request #47 from ammen99/master
wayland: implement a proper repaint cycle
Diffstat (limited to 'lib/renderers/wayland/wayland.c')
-rw-r--r-- | lib/renderers/wayland/wayland.c | 14 |
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); } |