From 6efdcb1e6fa19660de090f04ad50a5402403a947 Mon Sep 17 00:00:00 2001 From: ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> Date: Sun, 15 May 2022 09:04:47 +0200 Subject: Simpler code to map GL windows under Wayland. --- src/drivers/Wayland/Fl_Wayland_Gl_Window_Driver.H | 1 - src/drivers/Wayland/Fl_Wayland_Gl_Window_Driver.cxx | 17 ++++++++--------- 2 files changed, 8 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/drivers/Wayland/Fl_Wayland_Gl_Window_Driver.H b/src/drivers/Wayland/Fl_Wayland_Gl_Window_Driver.H index 7110a8e3a..8a1c4abc2 100644 --- a/src/drivers/Wayland/Fl_Wayland_Gl_Window_Driver.H +++ b/src/drivers/Wayland/Fl_Wayland_Gl_Window_Driver.H @@ -36,7 +36,6 @@ Consequently, FL_DOUBLE is enforced in all Fl_Gl_Window::mode_ values under Wayl class Fl_Wayland_Gl_Window_Driver : public Fl_Gl_Window_Driver { friend Fl_Gl_Window_Driver* Fl_Gl_Window_Driver::newGlWindowDriver(Fl_Gl_Window *); bool egl_resize_in_progress; - bool swap_done; Fl_Wayland_Gl_Window_Driver(Fl_Gl_Window *win); virtual float pixels_per_unit(); virtual void make_current_before(); diff --git a/src/drivers/Wayland/Fl_Wayland_Gl_Window_Driver.cxx b/src/drivers/Wayland/Fl_Wayland_Gl_Window_Driver.cxx index 67ad43b9e..7cc646ab2 100644 --- a/src/drivers/Wayland/Fl_Wayland_Gl_Window_Driver.cxx +++ b/src/drivers/Wayland/Fl_Wayland_Gl_Window_Driver.cxx @@ -56,7 +56,6 @@ Fl_Wayland_Gl_Window_Driver::Fl_Wayland_Gl_Window_Driver(Fl_Gl_Window *win) : Fl egl_window = NULL; egl_surface = NULL; egl_resize_in_progress = false; - swap_done = false; } @@ -242,12 +241,13 @@ void Fl_Wayland_Gl_Window_Driver::make_current_before() { egl_surface = eglCreateWindowSurface(egl_display, g->egl_conf, egl_window, NULL); //fprintf(stderr, "Created egl surface=%p at scale=%d\n", egl_surface, win->scale); wl_surface_set_buffer_scale(surface, win->scale); - if (pWindow->parent() && Fl_Wayland_Screen_Driver::compositor == Fl_Wayland_Screen_Driver::WESTON) { - bool done = false; - struct wl_callback *callback = wl_surface_frame(surface); - wl_surface_commit(surface); - wl_callback_add_listener(callback, &gl_surface_frame_listener, &done); - while (!done) wl_display_dispatch(Fl_Wayland_Screen_Driver::wl_display); + bool done = false; + struct wl_callback *callback = wl_surface_frame(surface); + wl_surface_commit(surface); + wl_callback_add_listener(callback, &gl_surface_frame_listener, &done); + while (!done) { + wl_display_dispatch(Fl_Wayland_Screen_Driver::wl_display); + eglSwapBuffers(Fl_Wayland_Gl_Window_Driver::egl_display, egl_surface); } } } @@ -308,9 +308,8 @@ void Fl_Wayland_Gl_Window_Driver::swap_buffers() { wl_display_read_events(Fl_Wayland_Screen_Driver::wl_display); wl_display_dispatch_queue_pending(Fl_Wayland_Screen_Driver::wl_display, gl_event_queue); } - if (!egl_resize_in_progress || pWindow->parent() || !swap_done) { + if (!egl_resize_in_progress || pWindow->parent()) { eglSwapBuffers(Fl_Wayland_Gl_Window_Driver::egl_display, egl_surface); - swap_done = true; } egl_resize_in_progress = false; } -- cgit v1.2.3