diff options
| author | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2022-04-01 14:36:41 +0200 |
|---|---|---|
| committer | ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> | 2022-04-01 14:36:41 +0200 |
| commit | d992a1240394acbf410a875c0196b750f449e3f0 (patch) | |
| tree | b8e373f8174b765f0198d78e804d4a80fc0c7d46 /src/drivers | |
| parent | a53efd73d7619173f93e58d4c85da12d4cda2101 (diff) | |
| parent | e91d65cd2fa4ea1965de5035e658bb866fcf38db (diff) | |
Merge remote-tracking branch 'refs/remotes/origin/master'
Diffstat (limited to 'src/drivers')
| -rw-r--r-- | src/drivers/Cairo/Fl_Cairo_Graphics_Driver.H | 4 | ||||
| -rw-r--r-- | src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H | 2 | ||||
| -rw-r--r-- | src/drivers/Wayland/Fl_Wayland_Gl_Window_Driver.H | 2 | ||||
| -rw-r--r-- | src/drivers/Wayland/Fl_Wayland_Gl_Window_Driver.cxx | 18 | ||||
| -rw-r--r-- | src/drivers/Wayland/Fl_Wayland_Graphics_Driver.H | 4 | ||||
| -rw-r--r-- | src/drivers/Wayland/Fl_Wayland_Screen_Driver.H | 4 | ||||
| -rw-r--r-- | src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx | 38 | ||||
| -rw-r--r-- | src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx | 36 | ||||
| -rw-r--r-- | src/drivers/Wayland/fl_wayland_clipboard_dnd.cxx | 2 | ||||
| -rw-r--r-- | src/drivers/WinAPI/Fl_WinAPI_Gl_Window_Driver.H | 2 |
10 files changed, 56 insertions, 56 deletions
diff --git a/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.H b/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.H index 8345fbd47..00ae55e61 100644 --- a/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.H +++ b/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.H @@ -144,7 +144,7 @@ public: void ps_origin(int x, int y); void ps_translate(int, int); void ps_untranslate(); - + void draw_cached_pattern_(Fl_Image *img, cairo_pattern_t *pat, int X, int Y, int W, int H, int cx, int cy); void draw_image(const uchar *data, int ix, int iy, int iw, int ih, int D, int LD); void draw_rgb(Fl_RGB_Image *rgb,int XP, int YP, int WP, int HP, int cx, int cy); @@ -156,7 +156,7 @@ public: void cache(Fl_Pixmap *pxm); void draw_pixmap(Fl_Pixmap *rgb,int XP, int YP, int WP, int HP, int cx, int cy); void uncache_pixmap(fl_uintptr_t p); - + void font(Fl_Font fnum, Fl_Fontsize s); Fl_Font font() { return Fl_Graphics_Driver::font(); } void draw(const char* s, int nBytes, int x, int y) { draw(s, nBytes, float(x), float(y)); } diff --git a/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H b/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H index 60569ff3f..f0d31ec1c 100644 --- a/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H +++ b/src/drivers/Cocoa/Fl_Cocoa_Window_Driver.H @@ -162,7 +162,7 @@ public: //icons virtual void icons(const Fl_RGB_Image *icons[], int count); NSImage *icon_image; - + virtual fl_uintptr_t os_id(); }; diff --git a/src/drivers/Wayland/Fl_Wayland_Gl_Window_Driver.H b/src/drivers/Wayland/Fl_Wayland_Gl_Window_Driver.H index 486051f6f..3698551f9 100644 --- a/src/drivers/Wayland/Fl_Wayland_Gl_Window_Driver.H +++ b/src/drivers/Wayland/Fl_Wayland_Gl_Window_Driver.H @@ -26,7 +26,7 @@ #include <FL/gl.h> /* Implementation note about OpenGL drawing on the Wayland platform - + After eglCreateWindowSurface() with attributes {EGL_RENDER_BUFFER, EGL_SINGLE_BUFFER, EGL_NONE}, eglQueryContext() reports that EGL_RENDER_BUFFER equals EGL_BACK_BUFFER. This experiment suggests that the platform only supports double-buffer drawing. diff --git a/src/drivers/Wayland/Fl_Wayland_Gl_Window_Driver.cxx b/src/drivers/Wayland/Fl_Wayland_Gl_Window_Driver.cxx index 6f2e22895..fc9d12dcb 100644 --- a/src/drivers/Wayland/Fl_Wayland_Gl_Window_Driver.cxx +++ b/src/drivers/Wayland/Fl_Wayland_Gl_Window_Driver.cxx @@ -28,7 +28,7 @@ #include <FL/gl.h> /* Implementation note about OpenGL drawing on the Wayland platform - + After eglCreateWindowSurface() with attributes {EGL_RENDER_BUFFER, EGL_SINGLE_BUFFER, EGL_NONE}, eglQueryContext() reports that EGL_RENDER_BUFFER equals EGL_BACK_BUFFER. This experiment suggests that the platform only supports double-buffer drawing. @@ -61,22 +61,22 @@ Fl_Wayland_Gl_Window_Driver::Fl_Wayland_Gl_Window_Driver(Fl_Gl_Window *win) : Fl void Fl_Wayland_Gl_Window_Driver::init() { EGLint major, minor; - + if (!Fl_Wayland_Screen_Driver::wl_display) Fl::screen_driver()->open_display(); egl_display = eglGetDisplay((EGLNativeDisplayType) Fl_Wayland_Screen_Driver::wl_display); if (egl_display == EGL_NO_DISPLAY) { Fl::fatal("Can't create egl display\n"); } - + if (eglInitialize(egl_display, &major, &minor) != EGL_TRUE) { Fl::fatal("Can't initialise egl display\n"); } //printf("EGL major: %d, minor %d\n", major, minor); - + eglGetConfigs(egl_display, NULL, 0, &configs_count); //printf("EGL has %d configs\n", configs_count); eglBindAPI(EGL_OPENGL_API); - + gl_event_queue = wl_display_create_queue(Fl_Wayland_Screen_Driver::wl_display); } @@ -115,7 +115,7 @@ Fl_Gl_Choice *Fl_Wayland_Gl_Window_Driver::find(int m, const int *alistp) m |= FL_DOUBLE; Fl_Wayland_Gl_Choice *g = (Fl_Wayland_Gl_Choice*)Fl_Gl_Window_Driver::find_begin(m, alistp); if (g) return g; - + EGLint n; EGLint config_attribs[] = { EGL_SURFACE_TYPE, EGL_WINDOW_BIT, @@ -128,11 +128,11 @@ Fl_Gl_Choice *Fl_Wayland_Gl_Window_Driver::find(int m, const int *alistp) EGL_STENCIL_SIZE, 0, // set at 15 EGL_NONE }; - + if (m & FL_DEPTH) config_attribs[11] = 1; if (m & FL_MULTISAMPLE) config_attribs[13] = 1; if (m & FL_STENCIL) config_attribs[15] = 1; - + static EGLConfig *configs = (void**)calloc(configs_count, sizeof(EGLConfig)); eglChooseConfig(egl_display, config_attribs, configs, configs_count, &n); if (n == 0 && (m & FL_MULTISAMPLE)) { @@ -142,7 +142,7 @@ Fl_Gl_Choice *Fl_Wayland_Gl_Window_Driver::find(int m, const int *alistp) if (n == 0) { Fl::fatal("failed to choose an EGL config\n"); } - + g = new Fl_Wayland_Gl_Choice(m, alistp, first); /*for (int i = 0; i < n; i++) { EGLint size; diff --git a/src/drivers/Wayland/Fl_Wayland_Graphics_Driver.H b/src/drivers/Wayland/Fl_Wayland_Graphics_Driver.H index c2d5f9554..c11d02a52 100644 --- a/src/drivers/Wayland/Fl_Wayland_Graphics_Driver.H +++ b/src/drivers/Wayland/Fl_Wayland_Graphics_Driver.H @@ -24,7 +24,7 @@ /* Implementation note about buffers FLTK uses to support display graphics under Wayland. - + Each window is associated to an FLTK-defined object of type struct wld_window containing itself an FLTK-defined struct fl_wld_buffer object holding all graphics data. Among members of this latter structure are: @@ -44,7 +44,7 @@ gives the total buffer size in bytes (thus, data_size / stride gives the buffer height); - struct wl_callback *cb is used to synchronize drawing with the compositor during progressive drawing. - + When a graphics scene is to be committed, the data_size bytes of draw_buffer are copied by memcpy() starting at data, and wl_buffer is attached to the wl_surface which is committed for display by wl_surface_commit(). diff --git a/src/drivers/Wayland/Fl_Wayland_Screen_Driver.H b/src/drivers/Wayland/Fl_Wayland_Screen_Driver.H index 97395dbef..71c30e30a 100644 --- a/src/drivers/Wayland/Fl_Wayland_Screen_Driver.H +++ b/src/drivers/Wayland/Fl_Wayland_Screen_Driver.H @@ -68,7 +68,7 @@ public: static bool insertion_point_location(int *px, int *py, int *pwidth, int *pheight); int get_mouse_unscaled(int &xx, int &yy); void screen_count(int count) {num_screens = count;} - + void reset_cursor(); struct wl_cursor *xc_arrow; struct wl_cursor *xc_ns; @@ -113,7 +113,7 @@ public: struct libdecor *libdecor_context; struct xdg_wm_base *xdg_wm_base; struct zwp_text_input_manager_v3 *text_input_base; - + Fl_Wayland_Screen_Driver(); virtual APP_SCALING_CAPABILITY rescalable() { return PER_SCREEN_APP_SCALING; } virtual float scale(int n); diff --git a/src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx b/src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx index 09a04ba90..c821c0728 100644 --- a/src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx +++ b/src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx @@ -52,16 +52,16 @@ struct pointer_output { }; /* Implementation note about support of 3 Wayland compositors: Mutter, Weston, KDE. - + - About CSD and SSD : * Mutter and Weston use CSD (client-side decoration) which means that libdecor.so draws all window titlebars and responds to resize, minimization and maximization events. * KDE uses SSD (server-side decoration) which means the OS draws titlebars according to its own rules and triggers resize, minimization and maximization events. - + - Function registry_handle_global() runs within fl_open_display() and sets public static variable Fl_Wayland_Screen_Driver::compositor to either Fl_Wayland_Screen_Driver::MUTTER, ::WESTON, or ::KDE. - + - Specific operations for WESTON: * When a libdecor-framed window is minimized under Weston, the frame remains on display. To avoid that, function libdecor_frame_set_minimized() is modified so it turns off the frame's visibility, with @@ -82,7 +82,7 @@ struct pointer_output { A frame callback is also created by Fl_Wayland_Window_Driver::flush() when a window redraw operation is needed. FLTK processes wayland events until the compositor is ready for commit and then commits the new window content. - + - Support of Fl_Window::border(int) : FLTK uses libdecor_frame_set_visibility() to show or hide a toplevel window's frame. This doesn't work with KDE which uses Server-Side Decoration. In that case, FLTK hides and re-shows the window to toggle @@ -91,7 +91,7 @@ struct pointer_output { /* Implementation note about screen-related information - + struct wl_output : Wayland-defined, contains info about a screen, one such record for each screen struct Fl_Wayland_Screen_Driver::output { // FLTK defined @@ -488,15 +488,15 @@ static void wl_keyboard_keymap(void *data, struct wl_keyboard *wl_keyboard, { struct seat *seat = (struct seat*)data; assert(format == WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1); - + char *map_shm = (char*)mmap(NULL, size, PROT_READ, MAP_SHARED, fd, 0); assert(map_shm != MAP_FAILED); - + struct xkb_keymap *xkb_keymap = xkb_keymap_new_from_string(seat->xkb_context, map_shm, XKB_KEYMAP_FORMAT_TEXT_V1, XKB_KEYMAP_COMPILE_NO_FLAGS); munmap(map_shm, size); close(fd); - + struct xkb_state *xkb_state = xkb_state_new(xkb_keymap); xkb_keymap_unref(seat->xkb_keymap); xkb_state_unref(seat->xkb_state); @@ -680,7 +680,7 @@ fprintf(stderr, "key %s: sym: %-12s(%d) code:%u fl_win=%p, ", action, buf, sym, //fprintf(stderr, "xkb_compose_status=%d ctxt=%p state=%p l=%d[%s]\n", status, seat->xkb_context, seat->xkb_compose_state, Fl::e_length, buf); } // end of part used only without text-input-unstable-v3 - + wld_event_time = time; int event = (state == WL_KEYBOARD_KEY_STATE_PRESSED ? FL_KEYDOWN : FL_KEYUP); // Send event to focus-containing top window as defined by FLTK, @@ -739,7 +739,7 @@ static const struct wl_keyboard_listener wl_keyboard_listener = { .repeat_info = wl_keyboard_repeat_info, }; - + void text_input_enter(void *data, struct zwp_text_input_v3 *zwp_text_input_v3, struct wl_surface *surface) { //puts("text_input_enter"); @@ -823,7 +823,7 @@ static void seat_capabilities(void *data, struct wl_seat *wl_seat, uint32_t capa wl_pointer_release(seat->wl_pointer); seat->wl_pointer = NULL; } - + bool have_keyboard = capabilities & WL_SEAT_CAPABILITY_KEYBOARD; if (have_keyboard && seat->wl_keyboard == NULL) { seat->wl_keyboard = wl_seat_get_keyboard(wl_seat); @@ -932,16 +932,16 @@ static void registry_handle_global(void *user_data, struct wl_registry *wl_regis } scr_driver->wl_compositor = (struct wl_compositor*)wl_registry_bind(wl_registry, id, &wl_compositor_interface, 4); - + } else if (strcmp(interface, "wl_subcompositor") == 0) { scr_driver->wl_subcompositor = (struct wl_subcompositor*)wl_registry_bind(wl_registry, - id, &wl_subcompositor_interface, 1); - + id, &wl_subcompositor_interface, 1); + } else if (strcmp(interface, "wl_shm") == 0) { scr_driver->wl_shm = (struct wl_shm*)wl_registry_bind(wl_registry, id, &wl_shm_interface, 1); wl_shm_add_listener(scr_driver->wl_shm, &shm_listener, NULL); - + } else if (strcmp(interface, "wl_seat") == 0) { if (version < 3) { Fl::fatal("%s version 3 required but only version %i is available\n", interface, version); @@ -965,7 +965,7 @@ static void registry_handle_global(void *user_data, struct wl_registry *wl_regis scr_driver->seat->data_device = wl_data_device_manager_get_data_device(scr_driver->seat->data_device_manager, scr_driver->seat->wl_seat); wl_data_device_add_listener(scr_driver->seat->data_device, Fl_Wayland_Screen_Driver::p_data_device_listener, NULL); } - + } else if (strcmp(interface, wl_data_device_manager_interface.name) == 0) { if (!scr_driver->seat) scr_driver->seat = (struct seat*)calloc(1, sizeof(struct seat)); scr_driver->seat->data_device_manager = (struct wl_data_device_manager*)wl_registry_bind(wl_registry, id, &wl_data_device_manager_interface, 3); @@ -974,7 +974,7 @@ static void registry_handle_global(void *user_data, struct wl_registry *wl_regis wl_data_device_add_listener(scr_driver->seat->data_device, Fl_Wayland_Screen_Driver::p_data_device_listener, NULL); } //fprintf(stderr, "registry_handle_global: %s\n", interface); - + } else if (strcmp(interface, "wl_output") == 0) { if (version < 2) { Fl::fatal("%s version 3 required but only version %i is available\n", interface, version); @@ -990,7 +990,7 @@ static void registry_handle_global(void *user_data, struct wl_registry *wl_regis wl_list_insert(&(scr_driver->outputs), &output->link); scr_driver->screen_count( wl_list_length(&(scr_driver->outputs)) ); //fprintf(stderr, "wl_output: id=%d wl_output=%p screen_count()=%d\n", id, output->wl_output, Fl::screen_count()); - + } else if (strcmp(interface, xdg_wm_base_interface.name) == 0) { //fprintf(stderr, "registry_handle_global interface=%s\n", interface); scr_driver->xdg_wm_base = (struct xdg_wm_base *)wl_registry_bind(wl_registry, id, &xdg_wm_base_interface, 1); @@ -1061,7 +1061,7 @@ Fl_Wayland_Screen_Driver::Fl_Wayland_Screen_Driver() : Fl_Screen_Driver() { void Fl_Wayland_Screen_Driver::open_display_platform() { struct wl_registry *wl_registry; - + static bool beenHereDoneThat = false; if (beenHereDoneThat) return; diff --git a/src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx b/src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx index d2e3d9305..93e3dd991 100644 --- a/src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx +++ b/src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx @@ -388,7 +388,7 @@ void Fl_Wayland_Window_Driver::make_current() { fl_alert(err_message); Fl::fatal(err_message); } - + struct wld_window *window = fl_xid(pWindow); float scale = Fl::screen_scale(pWindow->screen_num()) * window->scale; if (window && window->buffer) { @@ -444,7 +444,7 @@ void Fl_Wayland_Window_Driver::flush() { } struct wld_window *window = fl_xid(pWindow); if (!window || !window->configured_width) return; - + Fl_X *i = Fl_X::i(pWindow); Fl_Region r = i->region; float f = Fl::screen_scale(pWindow->screen_num()); @@ -466,7 +466,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; - + wl_surface_frame(window->wl_surface); Fl_Wayland_Graphics_Driver::buffer_commit(window); } @@ -769,7 +769,7 @@ static void handle_configure(struct libdecor_frame *frame, float f = Fl::screen_scale(window->fl_win->screen_num()); if (!window->xdg_surface) window->xdg_surface = libdecor_frame_get_xdg_surface(frame); - + if (window->fl_win->fullscreen_active()) { libdecor_frame_set_fullscreen(window->frame, NULL); } else if (driver->show_iconic()) { @@ -795,17 +795,17 @@ static void handle_configure(struct libdecor_frame *frame, } } else { width = height = 0; } } - + if (width == 0) { width = window->floating_width; height = window->floating_height; //fprintf(stderr,"handle_configure: using floating %dx%d\n",width,height); } - + driver->in_handle_configure = true; window->fl_win->resize(0, 0, ceil(width / f), ceil(height / f)); driver->in_handle_configure = false; - + if (ceil(width / f) != window->configured_width || ceil(height / f) != window->configured_height) { if (window->buffer) { Fl_Wayland_Graphics_Driver::buffer_release(window); @@ -899,7 +899,7 @@ static void xdg_surface_configure(void *data, struct xdg_surface *xdg_surface, u struct wld_window *window = (struct wld_window*)data; xdg_surface_ack_configure(xdg_surface, serial); //fprintf(stderr, "xdg_surface_configure: surface=%p\n", window->wl_surface); - + if (window->fl_win->w() != window->configured_width || window->fl_win->h() != window->configured_height) { if (window->buffer) { Fl_Wayland_Graphics_Driver::buffer_release(window); @@ -1034,7 +1034,7 @@ Fl_X *Fl_Wayland_Window_Driver::makeWindow() struct wld_window *new_window; Fl_Wayland_Screen_Driver::output *output; wait_for_expose_value = 1; - + if (pWindow->parent() && !pWindow->window()->shown()) return NULL; new_window = (struct wld_window *)calloc(1, sizeof *new_window); @@ -1049,7 +1049,7 @@ Fl_X *Fl_Wayland_Window_Driver::makeWindow() new_window->wl_surface = wl_compositor_create_surface(scr_driver->wl_compositor); //Fl::warning("makeWindow:%p wayland-scale=%d user-scale=%.2f\n", pWindow, new_window->scale, Fl::screen_scale(0)); wl_surface_add_listener(new_window->wl_surface, &surface_listener, new_window); - + if (pWindow->user_data() == &Fl_Screen_Driver::transient_scale_display && Fl::first_window()) { // put transient scale win at center of top window by making it a child of top int center_x, center_y; @@ -1059,7 +1059,7 @@ Fl_X *Fl_Wayland_Window_Driver::makeWindow() pWindow->position(center_x - pWindow->w()/2 , center_y - pWindow->h()/2); } } - + if (pWindow->menu_window() || pWindow->tooltip_window()) { // a menu window or tooltip new_window->kind = POPUP; new_window->xdg_surface = xdg_wm_base_get_xdg_surface(scr_driver->xdg_wm_base, new_window->wl_surface); @@ -1112,7 +1112,7 @@ Fl_X *Fl_Wayland_Window_Driver::makeWindow() float f = Fl::screen_scale(pWindow->screen_num()); new_window->floating_width = pWindow->w() * f; new_window->floating_height = pWindow->h() * f; - + } else if (pWindow->parent()) { // for subwindows (GL or non-GL) new_window->kind = SUBWINDOW; struct wld_window *parent = fl_xid(pWindow->window()); @@ -1140,7 +1140,7 @@ Fl_X *Fl_Wayland_Window_Driver::makeWindow() wl_surface_commit(new_window->wl_surface); pWindow->border(0); } - + Fl_Window *old_first = Fl::first_window(); Window first_xid = (old_first ? fl_xid(old_first) : NULL); Fl_X *xp = new Fl_X; @@ -1159,7 +1159,7 @@ Fl_X *Fl_Wayland_Window_Driver::makeWindow() xp->next = NULL; Fl_X::first = xp; } - + if (pWindow->modal() || pWindow->non_modal()) { if (pWindow->modal()) Fl::modal_ = pWindow; if (new_window->kind == DECORATED && first_xid && first_xid->kind == DECORATED) { @@ -1170,14 +1170,14 @@ Fl_X *Fl_Wayland_Window_Driver::makeWindow() top_dr->xdg_toplevel()); } } - + size_range(); pWindow->set_visible(); int old_event = Fl::e_number; pWindow->handle(Fl::e_number = FL_SHOW); // get child windows to appear Fl::e_number = old_event; pWindow->redraw(); - + return xp; } @@ -1462,7 +1462,7 @@ void Fl_Wayland_Window_Driver::resize(int X, int Y, int W, int H) { x(0); y(0); } } - + if (shown()) { struct wld_window *fl_win = fl_xid(pWindow); float f = Fl::screen_scale(pWindow->screen_num()); @@ -1521,7 +1521,7 @@ void Fl_Wayland_Window_Driver::reposition_menu_window(int x, int y) { y_offset = y-1; y = 1; } - + //printf("should move menuwindow to %d y_offset=%d y=%d\n", true_y, y_offset, pWindow->y()); struct xdg_popup *old_popup = xid_menu->xdg_popup; struct xdg_surface *old_xdg = xid_menu->xdg_surface; diff --git a/src/drivers/Wayland/fl_wayland_clipboard_dnd.cxx b/src/drivers/Wayland/fl_wayland_clipboard_dnd.cxx index 315df2919..07bcd3ed4 100644 --- a/src/drivers/Wayland/fl_wayland_clipboard_dnd.cxx +++ b/src/drivers/Wayland/fl_wayland_clipboard_dnd.cxx @@ -144,7 +144,7 @@ static void data_source_handle_action(void *data, struct wl_data_source *source, break; } } - + static void data_source_handle_dnd_drop_performed(void *data, struct wl_data_source *source) { //printf("Drop performed\n"); } diff --git a/src/drivers/WinAPI/Fl_WinAPI_Gl_Window_Driver.H b/src/drivers/WinAPI/Fl_WinAPI_Gl_Window_Driver.H index efece9d19..4b48cfd4c 100644 --- a/src/drivers/WinAPI/Fl_WinAPI_Gl_Window_Driver.H +++ b/src/drivers/WinAPI/Fl_WinAPI_Gl_Window_Driver.H @@ -24,7 +24,7 @@ #include <FL/gl.h> /* Implementation note about OpenGL drawing on the Wayland platform - + After eglCreateWindowSurface() with attributes {EGL_RENDER_BUFFER, EGL_SINGLE_BUFFER, EGL_NONE}, eglQueryContext() reports that EGL_RENDER_BUFFER equals EGL_BACK_BUFFER. This experiment suggests that the platform only supports double-buffer drawing. |
