Avoid glpuzzle crash when resizing while puzzle is spinning - cont'd.
This commit is contained in:
parent
48ca0e3b50
commit
ad27da578a
@ -36,6 +36,7 @@ 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();
|
||||
|
@ -56,6 +56,7 @@ 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;
|
||||
}
|
||||
|
||||
|
||||
@ -307,11 +308,9 @@ 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_window) return;
|
||||
int W = 0, H;
|
||||
if (!pWindow->parent()) wl_egl_window_get_attached_size(egl_window, &W, &H);
|
||||
if (!egl_resize_in_progress || W == 0) {
|
||||
eglSwapBuffers(Fl_Wayland_Gl_Window_Driver::egl_display, egl_surface);
|
||||
if (!egl_resize_in_progress || pWindow->parent() || !swap_done) {
|
||||
eglSwapBuffers(Fl_Wayland_Gl_Window_Driver::egl_display, egl_surface);
|
||||
swap_done = true;
|
||||
}
|
||||
egl_resize_in_progress = false;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user