FLTK logo

[master] 9c9ce66 - Wayland under FreeBSD: fix support of GL windows.

FLTK matrix user chat room
(using Element browser app)   FLTK gitter user chat room   GitHub FLTK Project   FLTK News RSS Feed  
  FLTK Apps      FLTK Library      Forums      Links     Login 
 All Forums  |  Back to fltk.commit  ]
 
Previous Message ]Next Message ]

[master] 9c9ce66 - Wayland under FreeBSD: fix support of GL windows. "ManoloFLTK" May 20, 2022  
 
commit 9c9ce66d05c23a3f12ce3e28c98564fc2189e2c3
Author:     ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>
AuthorDate: Fri May 20 15:22:28 2022 +0200
Commit:     ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>
CommitDate: Fri May 20 15:22:28 2022 +0200

    Wayland under FreeBSD: fix support of GL windows.

 src/drivers/Wayland/Fl_Wayland_Gl_Window_Driver.cxx | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git src/drivers/Wayland/Fl_Wayland_Gl_Window_Driver.cxx src/drivers/Wayland/Fl_Wayland_Gl_Window_Driver.cxx
index f4e6fbf..dc35dc3 100644
--- src/drivers/Wayland/Fl_Wayland_Gl_Window_Driver.cxx
+++ src/drivers/Wayland/Fl_Wayland_Gl_Window_Driver.cxx
@@ -241,13 +241,20 @@ 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);
+//TODO It's still not entirely clear how to map a GL window
+// in a compositor-independent way.
     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 special = (Fl_Wayland_Screen_Driver::compositor == Fl_Wayland_Screen_Driver::unspecified);
+    if (!special) {
+      struct wl_callback *callback = wl_surface_frame(surface);
+      wl_surface_commit(surface);
+      wl_callback_add_listener(callback, &gl_surface_frame_listener, &done);
+    }
+    int count = 0;
+    while (!done && count < 5) {
+      wl_display_roundtrip(Fl_Wayland_Screen_Driver::wl_display);
       eglSwapBuffers(Fl_Wayland_Gl_Window_Driver::egl_display, egl_surface);
+      if (special) count++;
     }
   }
 }
Direct Link to Message ]
 
     
Previous Message ]Next Message ]
 
 

Comments are owned by the poster. All other content is copyright 1998-2024 by Bill Spitzak and others. This project is hosted by The FLTK Team. Please report site problems to 'erco@seriss.com'.