From b7fba465cec78b00a46a47ebd3f8f231b5feb5ee Mon Sep 17 00:00:00 2001 From: ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> Date: Thu, 18 Jan 2024 08:10:33 +0100 Subject: Wayland: throttle resize operations also for top-level GL windows Member cb of struct wld_buffer is replaced by member frame_cb of struct wld_window. This allows frame_cb to be used both for non-GL and for top-level GL windows. --- src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx') diff --git a/src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx b/src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx index e32943caa..138ef53d5 100644 --- a/src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx +++ b/src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx @@ -352,7 +352,7 @@ void Fl_Wayland_Window_Driver::make_current() { } // to support progressive drawing - if ( (!Fl_Wayland_Window_Driver::in_flush_) && window->buffer && (!window->buffer->cb) + if ( (!Fl_Wayland_Window_Driver::in_flush_) && window->buffer && (!window->frame_cb) && window->buffer->draw_buffer_needs_commit && (!wait_for_expose_value) ) { Fl_Wayland_Graphics_Driver::buffer_commit(window); } @@ -415,7 +415,7 @@ void Fl_Wayland_Window_Driver::flush() { Fl_Wayland_Window_Driver::in_flush_ = true; Fl_Window_Driver::flush(); Fl_Wayland_Window_Driver::in_flush_ = false; - if (!window->buffer->cb) Fl_Wayland_Graphics_Driver::buffer_commit(window, r); + if (!window->frame_cb) Fl_Wayland_Graphics_Driver::buffer_commit(window, r); } @@ -909,9 +909,9 @@ static void handle_configure(struct libdecor_frame *frame, #ifndef LIBDECOR_MR131 bool in_decorated_window_resizing = (window->state & LIBDECOR_WINDOW_STATE_RESIZING); #endif - bool condition = in_decorated_window_resizing && window->buffer; + bool condition = in_decorated_window_resizing; if (condition) { // see issue #878 - condition = (window->covered ? window->buffer->in_use : (window->buffer->cb != NULL)); + condition = (window->covered ? (window->buffer && window->buffer->in_use) : (window->frame_cb != NULL)); } if (condition) { // Skip resizing & redrawing. The last resize request won't be skipped because -- cgit v1.2.3