summaryrefslogtreecommitdiff
path: root/src/drivers/Wayland
diff options
context:
space:
mode:
authorManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2022-09-09 15:19:15 +0200
committerManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2022-09-09 15:19:15 +0200
commit203e7b70985b269de64a5b855c0ed9f1c5dfffd9 (patch)
tree233666e3e01800de81b824a2cd09f6399d15ade4 /src/drivers/Wayland
parent1b0f21cc8fec9a933770a2ed6d7feafe91ee8333 (diff)
New OPTION_WAYLAND_ONLY for CMake to build pure Wayland platform.
Diffstat (limited to 'src/drivers/Wayland')
-rw-r--r--src/drivers/Wayland/Fl_Wayland_Screen_Driver.H2
-rw-r--r--src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx8
-rw-r--r--src/drivers/Wayland/Fl_Wayland_System_Driver.cxx2
-rw-r--r--src/drivers/Wayland/fl_wayland_gl_platform_init.cxx7
-rw-r--r--src/drivers/Wayland/fl_wayland_platform_init.cxx42
5 files changed, 50 insertions, 11 deletions
diff --git a/src/drivers/Wayland/Fl_Wayland_Screen_Driver.H b/src/drivers/Wayland/Fl_Wayland_Screen_Driver.H
index f0f01ca1f..28e5f3655 100644
--- a/src/drivers/Wayland/Fl_Wayland_Screen_Driver.H
+++ b/src/drivers/Wayland/Fl_Wayland_Screen_Driver.H
@@ -174,7 +174,9 @@ public:
static compositor_name compositor; // identifies the used Wayland compositor
void set_spot(int font, int height, int x, int y, int w, int h, Fl_Window *win);
void reset_spot();
+#if FLTK_USE_X11
static bool undo_wayland_backend_if_needed(const char *backend = NULL);
+#endif
};
diff --git a/src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx b/src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx
index b12b32bca..ec93f1fa9 100644
--- a/src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx
+++ b/src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx
@@ -18,7 +18,9 @@
#include "Fl_Wayland_Screen_Driver.H"
#include "Fl_Wayland_Window_Driver.H"
#include "Fl_Wayland_System_Driver.H"
-#include "../X11/Fl_X11_System_Driver.H"
+#if FLTK_USE_X11
+# include "../X11/Fl_X11_System_Driver.H"
+#endif
#include "Fl_Wayland_Graphics_Driver.H"
#include <wayland-cursor.h>
#include "../../../libdecor/src/libdecor.h"
@@ -1090,6 +1092,7 @@ Fl_Wayland_Screen_Driver::Fl_Wayland_Screen_Driver() : Fl_Screen_Driver() {
}
+#if FLTK_USE_X11
bool Fl_Wayland_Screen_Driver::undo_wayland_backend_if_needed(const char *backend) {
if (!backend) backend = getenv("FLTK_BACKEND");
if (wl_display && backend && strcmp(backend, "x11") == 0) {
@@ -1101,6 +1104,7 @@ bool Fl_Wayland_Screen_Driver::undo_wayland_backend_if_needed(const char *backen
}
return false;
}
+#endif
void Fl_Wayland_Screen_Driver::open_display_platform() {
@@ -1109,10 +1113,12 @@ void Fl_Wayland_Screen_Driver::open_display_platform() {
return;
beenHereDoneThat = true;
+#if FLTK_USE_X11
if (undo_wayland_backend_if_needed()) {
Fl::screen_driver()->open_display();
return;
}
+#endif
if (!wl_display) {
wl_display = wl_display_connect(NULL);
diff --git a/src/drivers/Wayland/Fl_Wayland_System_Driver.cxx b/src/drivers/Wayland/Fl_Wayland_System_Driver.cxx
index c47ff56cf..219d68926 100644
--- a/src/drivers/Wayland/Fl_Wayland_System_Driver.cxx
+++ b/src/drivers/Wayland/Fl_Wayland_System_Driver.cxx
@@ -95,6 +95,7 @@ void *Fl_Wayland_System_Driver::control_maximize_button(void *data) {
void Fl_Wayland_System_Driver::disable_wayland() {
+#if FLTK_USE_X11
if (too_late_to_disable) {
fprintf(stderr, "Error: fl_disable_wayland() cannot be called "
"after the Wayland display was opened\n"
@@ -102,4 +103,5 @@ void Fl_Wayland_System_Driver::disable_wayland() {
exit(1);
}
Fl_Wayland_Screen_Driver::undo_wayland_backend_if_needed("x11");
+#endif
}
diff --git a/src/drivers/Wayland/fl_wayland_gl_platform_init.cxx b/src/drivers/Wayland/fl_wayland_gl_platform_init.cxx
index f80ee67ba..1d060b193 100644
--- a/src/drivers/Wayland/fl_wayland_gl_platform_init.cxx
+++ b/src/drivers/Wayland/fl_wayland_gl_platform_init.cxx
@@ -17,11 +17,16 @@
#include "Fl_Wayland_Gl_Window_Driver.H"
#include "Fl_Wayland_Screen_Driver.H"
+#if FLTK_USE_X11
#include "../X11/Fl_X11_Gl_Window_Driver.H"
-
+#endif
Fl_Gl_Window_Driver *Fl_Gl_Window_Driver::newGlWindowDriver(Fl_Gl_Window *w)
{
+#if FLTK_USE_X11
if (Fl_Wayland_Screen_Driver::wl_display) return new Fl_Wayland_Gl_Window_Driver(w);
return new Fl_X11_Gl_Window_Driver(w);
+#else
+ return new Fl_Wayland_Gl_Window_Driver(w);
+#endif
}
diff --git a/src/drivers/Wayland/fl_wayland_platform_init.cxx b/src/drivers/Wayland/fl_wayland_platform_init.cxx
index c1536680c..e962de92b 100644
--- a/src/drivers/Wayland/fl_wayland_platform_init.cxx
+++ b/src/drivers/Wayland/fl_wayland_platform_init.cxx
@@ -21,21 +21,22 @@
#include "Fl_Wayland_System_Driver.H"
#include "Fl_Wayland_Window_Driver.H"
#include "Fl_Wayland_Image_Surface_Driver.H"
-
-#include "../Xlib/Fl_Xlib_Copy_Surface_Driver.H"
-#include <cairo-xlib.h>
-#include "../Cairo/Fl_Display_Cairo_Graphics_Driver.H"
-#include "../X11/Fl_X11_Screen_Driver.H"
-#include "../X11/Fl_X11_System_Driver.H"
-#include "../X11/Fl_X11_Window_Driver.H"
-#include "../Xlib/Fl_Xlib_Image_Surface_Driver.H"
-
+#if FLTK_USE_X11
+# include "../Xlib/Fl_Xlib_Copy_Surface_Driver.H"
+# include <cairo-xlib.h>
+# include "../Cairo/Fl_Display_Cairo_Graphics_Driver.H"
+# include "../X11/Fl_X11_Screen_Driver.H"
+# include "../X11/Fl_X11_System_Driver.H"
+# include "../X11/Fl_X11_Window_Driver.H"
+# include "../Xlib/Fl_Xlib_Image_Surface_Driver.H"
+#endif
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
Fl_System_Driver *Fl_System_Driver::newSystemDriver() {
+#if FLTK_USE_X11
const char *backend = ::getenv("FLTK_BACKEND");
const char *xdgrt = ::getenv("XDG_RUNTIME_DIR");
// fprintf(stderr, "FLTK_BACKEND='%s' XDG_RUNTIME_DIR='%s'\n",
@@ -72,6 +73,9 @@ Fl_System_Driver *Fl_System_Driver::newSystemDriver() {
fprintf(stderr, "Error: unexpected value of FLTK_BACKEND: '%s'\n", backend);
exit(1);
return NULL;
+#else
+ return new Fl_Wayland_System_Driver();
+#endif
}
@@ -99,6 +103,7 @@ FL_EXPORT Fl_Fontdesc *fl_fonts = built_in_table;
Fl_Graphics_Driver *Fl_Graphics_Driver::newMainGraphicsDriver() {
+#if FLTK_USE_X11
Fl_Wayland_Screen_Driver::undo_wayland_backend_if_needed();
if (Fl_Wayland_Screen_Driver::wl_display) {
fl_graphics_driver = new Fl_Wayland_Graphics_Driver();
@@ -106,16 +111,24 @@ Fl_Graphics_Driver *Fl_Graphics_Driver::newMainGraphicsDriver() {
fl_graphics_driver = new Fl_Display_Cairo_Graphics_Driver();
}
return fl_graphics_driver;
+#else
+ return new Fl_Wayland_Graphics_Driver();
+#endif
}
Fl_Copy_Surface_Driver *Fl_Copy_Surface_Driver::newCopySurfaceDriver(int w, int h) {
+#if FLTK_USE_X11
if (Fl_Wayland_Screen_Driver::wl_display) return new Fl_Wayland_Copy_Surface_Driver(w, h);
return new Fl_Xlib_Copy_Surface_Driver(w, h);
+#else
+ return new Fl_Wayland_Copy_Surface_Driver(w, h);
+#endif
}
Fl_Screen_Driver *Fl_Screen_Driver::newScreenDriver() {
+#if FLTK_USE_X11
if (!Fl_Screen_Driver::system_driver) Fl::system_driver();
Fl_Wayland_Screen_Driver::undo_wayland_backend_if_needed();
if (Fl_Wayland_Screen_Driver::wl_display) {
@@ -127,11 +140,15 @@ Fl_Screen_Driver *Fl_Screen_Driver::newScreenDriver() {
for (int i = 0; i < MAX_SCREENS; i++) d->screens[i].scale = 1;
d->current_xft_dpi = 0.; // means the value of the Xft.dpi resource is still unknown
return d;
+#else
+ return new Fl_Wayland_Screen_Driver();
+#endif
}
Fl_Window_Driver *Fl_Window_Driver::newWindowDriver(Fl_Window *w)
{
+#if FLTK_USE_X11
if (!Fl_Screen_Driver::system_driver) Fl::system_driver();
static bool been_here = false;
if (!been_here) {
@@ -141,11 +158,18 @@ Fl_Window_Driver *Fl_Window_Driver::newWindowDriver(Fl_Window *w)
}
if (Fl_Wayland_Screen_Driver::wl_display) return new Fl_Wayland_Window_Driver(w);
return new Fl_X11_Window_Driver(w);
+#else
+ return new Fl_Wayland_Window_Driver(w);
+#endif
}
Fl_Image_Surface_Driver *Fl_Image_Surface_Driver::newImageSurfaceDriver(int w, int h, int high_res, Fl_Offscreen off)
{
+#if FLTK_USE_X11
if (Fl_Wayland_Screen_Driver::wl_display) return new Fl_Wayland_Image_Surface_Driver(w, h, high_res, off);
return new Fl_Xlib_Image_Surface_Driver(w, h, high_res, off);
+#else
+ return new Fl_Wayland_Image_Surface_Driver(w, h, high_res, off);
+#endif
}