diff options
| author | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2022-08-07 10:43:38 +0200 |
|---|---|---|
| committer | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2022-08-07 10:43:38 +0200 |
| commit | 5dfc64ef323adfdf190b86dffaf8a9608b39afaa (patch) | |
| tree | af16537417a192cf3befdea9a8e8b3dbaa015c3e /src/drivers/Wayland/Fl_Wayland_Graphics_Driver.cxx | |
| parent | b25549ffa7a62bf492be93a8ffb8b9a0d62e0613 (diff) | |
Wayland platform: move repeated code into Fl_Wayland_Graphics_Driver::buffer_commit().
Diffstat (limited to 'src/drivers/Wayland/Fl_Wayland_Graphics_Driver.cxx')
| -rw-r--r-- | src/drivers/Wayland/Fl_Wayland_Graphics_Driver.cxx | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/drivers/Wayland/Fl_Wayland_Graphics_Driver.cxx b/src/drivers/Wayland/Fl_Wayland_Graphics_Driver.cxx index e817b6840..78586dc59 100644 --- a/src/drivers/Wayland/Fl_Wayland_Graphics_Driver.cxx +++ b/src/drivers/Wayland/Fl_Wayland_Graphics_Driver.cxx @@ -76,13 +76,19 @@ struct fl_wld_buffer *Fl_Wayland_Graphics_Driver::create_shm_buffer(int width, i } -void Fl_Wayland_Graphics_Driver::buffer_commit(struct wld_window *window) { - if (!window->buffer->draw_buffer_needs_commit) return; +void Fl_Wayland_Graphics_Driver::buffer_commit(struct wld_window *window, + const struct wl_callback_listener *listener) { cairo_surface_t *surf = cairo_get_target(window->buffer->cairo_); cairo_surface_flush(surf); memcpy(window->buffer->data, window->buffer->draw_buffer, window->buffer->data_size); wl_surface_attach(window->wl_surface, window->buffer->wl_buffer, 0, 0); wl_surface_set_buffer_scale(window->wl_surface, window->scale); + struct wl_callback *cb = wl_surface_frame(window->wl_surface); + if (listener) { + window->buffer->cb = cb; + wl_surface_damage_buffer(window->wl_surface, 0, 0, 1000000, 1000000); + wl_callback_add_listener(window->buffer->cb, listener, window); + } wl_surface_commit(window->wl_surface); window->buffer->draw_buffer_needs_commit = false; //fprintf(stderr,"buffer_commit %s\n", window->fl_win->parent()?"child":"top"); |
