Wayland: reduce the number of platform-specific FL_EXPORT directives.

This commit is contained in:
ManoloFLTK 2022-08-25 10:42:58 +02:00
parent 51e9b28f39
commit feac10ec89
3 changed files with 11 additions and 14 deletions

View File

@ -71,8 +71,8 @@ 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_open_display();
egl_display = eglGetDisplay((EGLNativeDisplayType) Fl_Wayland_Screen_Driver::wl_display);
if (!fl_wl_display()) fl_open_display();
egl_display = eglGetDisplay((EGLNativeDisplayType) fl_wl_display());
if (egl_display == EGL_NO_DISPLAY) {
Fl::fatal("Can't create egl display\n");
}
@ -86,17 +86,14 @@ void Fl_Wayland_Gl_Window_Driver::init() {
//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);
gl_event_queue = wl_display_create_queue(fl_wl_display());
}
char *Fl_Wayland_Gl_Window_Driver::alpha_mask_for_string(const char *str, int n, int w, int h, Fl_Fontsize fs)
{
// write str to a bitmap just big enough
struct wld_window *save_win = Fl_Wayland_Window_Driver::wld_window;
fl_window = Fl_Wayland_Window_Driver::wld_window = NULL;
Fl_Image_Surface *surf = new Fl_Image_Surface(w, h);
fl_window = Fl_Wayland_Window_Driver::wld_window = save_win;
Fl_Font f=fl_font();
Fl_Surface_Device::push_current(surf);
fl_color(FL_BLACK);
@ -264,8 +261,8 @@ void Fl_Wayland_Gl_Window_Driver::make_current_before() {
// Tested apps: shape, glpuzzle, cube, fractals, gl_overlay, fullscreen, unittests,
// OpenGL3-glut-test, OpenGL3test.
// Tested wayland compositors: mutter, kde-plasma, weston, sway on FreeBSD.
wl_display_roundtrip(Fl_Wayland_Screen_Driver::wl_display);
wl_display_roundtrip(Fl_Wayland_Screen_Driver::wl_display);
wl_display_roundtrip(fl_wl_display());
wl_display_roundtrip(fl_wl_display());
}
}
@ -319,11 +316,11 @@ void Fl_Wayland_Gl_Window_Driver::swap_buffers() {
if (egl_surface && !egl_swap_in_progress) {
egl_swap_in_progress = true;
//eglSwapInterval(egl_display, 0); // doesn't seem to have any effect in this context
while (wl_display_prepare_read(Fl_Wayland_Screen_Driver::wl_display) != 0) {
wl_display_dispatch_pending(Fl_Wayland_Screen_Driver::wl_display);
while (wl_display_prepare_read(fl_wl_display()) != 0) {
wl_display_dispatch_pending(fl_wl_display());
}
wl_display_read_events(Fl_Wayland_Screen_Driver::wl_display);
wl_display_dispatch_queue_pending(Fl_Wayland_Screen_Driver::wl_display, gl_event_queue);
wl_display_read_events(fl_wl_display());
wl_display_dispatch_queue_pending(fl_wl_display(), gl_event_queue);
eglSwapBuffers(Fl_Wayland_Gl_Window_Driver::egl_display, egl_surface);
egl_swap_in_progress = false;
}

View File

@ -63,7 +63,7 @@ class Fl_Wayland_Screen_Driver : public Fl_Screen_Driver
static int insertion_point_height;
static bool insertion_point_location_is_valid;
public:
static FL_EXPORT struct wl_display *wl_display;
static struct wl_display *wl_display;
static void insertion_point_location(int x, int y, int height);
static bool insertion_point_location(int *px, int *py, int *pwidth, int *pheight);
int get_mouse_unscaled(int &xx, int &yy);

View File

@ -84,7 +84,7 @@ public:
struct xdg_toplevel *xdg_toplevel();
Fl_Wayland_Window_Driver(Fl_Window*);
virtual ~Fl_Wayland_Window_Driver();
static FL_EXPORT struct wld_window *wld_window;
static struct wld_window *wld_window;
static void redraw(struct wld_window *window);
static inline Fl_Wayland_Window_Driver* driver(const Fl_Window *w) {return (Fl_Wayland_Window_Driver*)Fl_Window_Driver::driver(w);}