diff options
author | Marek Vasut <marex@denx.de> | 2022-10-29 14:46:41 +0300 |
---|---|---|
committer | Fabio Estevam <festevam@denx.de> | 2022-10-29 16:30:37 +0300 |
commit | 5dc5d3809b110feea6c25a1b0044db9e64af0830 (patch) | |
tree | d91be327c29c1af2eb4ead998b4b94716046f22b | |
parent | 91a8d9c40fa3618ae4ca7dbead79dba56b38cb1d (diff) |
remmina: Allow building on a Wayland-only environment
Currently, it is not possible to build remmina without x11
support.
Implement the necessary changes to support building and running
remmina on a Wayland-only environment.
Signed-off-by: Marek Vasut <marex@denx.de>
Signed-off-by: Fabio Estevam <festevam@denx.de>
-rw-r--r-- | plugins/python_wrapper/python_wrapper_plugin.c | 4 | ||||
-rw-r--r-- | plugins/rdp/CMakeLists.txt | 13 | ||||
-rw-r--r-- | plugins/rdp/rdp_event.c | 4 | ||||
-rw-r--r-- | plugins/rdp/rdp_graphics.c | 8 | ||||
-rw-r--r-- | plugins/rdp/rdp_plugin.c | 15 | ||||
-rw-r--r-- | plugins/rdp/rdp_plugin.h | 8 | ||||
-rw-r--r-- | plugins/x2go/x2go_plugin.c | 4 | ||||
-rw-r--r-- | src/CMakeLists.txt | 4 | ||||
-rw-r--r-- | src/rcw.c | 4 | ||||
-rw-r--r-- | src/remmina.c | 4 | ||||
-rw-r--r-- | src/remmina_plugin_manager.c | 6 | ||||
-rw-r--r-- | src/remmina_plugin_native.c | 4 | ||||
-rw-r--r-- | src/remmina_public.c | 2 |
13 files changed, 67 insertions, 13 deletions
diff --git a/plugins/python_wrapper/python_wrapper_plugin.c b/plugins/python_wrapper/python_wrapper_plugin.c index 7f54a14e3..858fc4557 100644 --- a/plugins/python_wrapper/python_wrapper_plugin.c +++ b/plugins/python_wrapper/python_wrapper_plugin.c @@ -36,7 +36,11 @@ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #include <gtk/gtk.h> +#ifdef GDK_WINDOWING_X11 #include <gdk/gdkx.h> +#else +#include <gdk/gdkwayland.h> +#endif #include "config.h" #include "remmina/plugin.h" #include "remmina/remmina_trace_calls.h" diff --git a/plugins/rdp/CMakeLists.txt b/plugins/rdp/CMakeLists.txt index dcb254208..034faeed4 100644 --- a/plugins/rdp/CMakeLists.txt +++ b/plugins/rdp/CMakeLists.txt @@ -35,7 +35,6 @@ set(CMAKE_THREAD_PREFER_PTHREAD TRUE) find_package(Threads REQUIRED) -find_package(X11) find_suggested_package(Cups) @@ -73,13 +72,13 @@ set_target_properties(remmina-plugin-rdp PROPERTIES PREFIX "") set_target_properties(remmina-plugin-rdp PROPERTIES NO_SONAME 1) if(WITH_FREERDP3) - include_directories(${REMMINA_COMMON_INCLUDE_DIRS} ${FREERDP3_INCLUDE_DIRS} ${X11_INCLUDE_DIR}) + include_directories(${REMMINA_COMMON_INCLUDE_DIRS} ${FREERDP3_INCLUDE_DIRS}) target_link_libraries(remmina-plugin-rdp - ${REMMINA_COMMON_LIBRARIES} ${FREERDP3_LIBRARIES} ${X11_LIBRARIES}) + ${REMMINA_COMMON_LIBRARIES} ${FREERDP3_LIBRARIES}) else() - include_directories(${REMMINA_COMMON_INCLUDE_DIRS} ${FREERDP_INCLUDE_DIRS} ${X11_INCLUDE_DIR}) + include_directories(${REMMINA_COMMON_INCLUDE_DIRS} ${FREERDP_INCLUDE_DIRS}) target_link_libraries(remmina-plugin-rdp - ${REMMINA_COMMON_LIBRARIES} ${FREERDP_LIBRARIES} ${X11_LIBRARIES}) + ${REMMINA_COMMON_LIBRARIES} ${FREERDP_LIBRARIES}) endif() if(CUPS_FOUND) @@ -87,10 +86,10 @@ if(CUPS_FOUND) include_directories(${CUPS_INCLUDE_DIR}) if(WITH_FREERDP3) target_link_libraries(remmina-plugin-rdp - ${REMMINA_COMMON_LIBRARIES} ${FREERDP3_LIBRARIES} ${X11_LIBRARIES} ${CUPS_LIBRARIES}) + ${REMMINA_COMMON_LIBRARIES} ${FREERDP3_LIBRARIES} ${CUPS_LIBRARIES}) else() target_link_libraries(remmina-plugin-rdp - ${REMMINA_COMMON_LIBRARIES} ${FREERDP_LIBRARIES} ${X11_LIBRARIES} ${CUPS_LIBRARIES}) + ${REMMINA_COMMON_LIBRARIES} ${FREERDP_LIBRARIES} ${CUPS_LIBRARIES}) endif() endif() diff --git a/plugins/rdp/rdp_event.c b/plugins/rdp/rdp_event.c index 14fd2df60..7b2484133 100644 --- a/plugins/rdp/rdp_event.c +++ b/plugins/rdp/rdp_event.c @@ -41,7 +41,11 @@ #include "rdp_monitor.h" #include "rdp_settings.h" #include <gdk/gdkkeysyms.h> +#ifdef GDK_WINDOWING_X11 #include <cairo/cairo-xlib.h> +#else +#include <cairo/cairo.h> +#endif #include <freerdp/locale/keyboard.h> gboolean remmina_rdp_event_on_map(RemminaProtocolWidget *gp) diff --git a/plugins/rdp/rdp_graphics.c b/plugins/rdp/rdp_graphics.c index 0b5e3685b..758855858 100644 --- a/plugins/rdp/rdp_graphics.c +++ b/plugins/rdp/rdp_graphics.c @@ -387,7 +387,11 @@ void rf_register_graphics(rdpGraphics* graphics) bitmap = (rdpBitmap*)malloc(sizeof(rdpBitmap)); ZeroMemory(bitmap, sizeof(rdpBitmap)); +#ifdef RF_BITMAP bitmap->size = sizeof(rfBitmap); +#else + bitmap->size = 0; +#endif bitmap->New = rf_Bitmap_New; bitmap->Free = rf_Bitmap_Free; @@ -417,7 +421,11 @@ void rf_register_graphics(rdpGraphics* graphics) glyph = (rdpGlyph*)malloc(sizeof(rdpGlyph)); ZeroMemory(glyph, sizeof(rdpGlyph)); +#ifdef RF_GLYPH glyph->size = sizeof(rfGlyph); +#else + glyph->size = 0; +#endif glyph->New = rf_Glyph_New; glyph->Free = rf_Glyph_Free; diff --git a/plugins/rdp/rdp_plugin.c b/plugins/rdp/rdp_plugin.c index cf6236769..105dd743a 100644 --- a/plugins/rdp/rdp_plugin.c +++ b/plugins/rdp/rdp_plugin.c @@ -51,7 +51,11 @@ #include <pthread.h> #include <time.h> #include <sys/time.h> +#ifdef GDK_WINDOWING_X11 #include <cairo/cairo-xlib.h> +#else +#include <cairo/cairo.h> +#endif #include <freerdp/addin.h> #include <freerdp/settings.h> #include <freerdp/freerdp.h> @@ -76,6 +80,8 @@ #include <X11/Xlib.h> #include <X11/XKBlib.h> #include <gdk/gdkx.h> +#else +#include <gdk/gdkwayland.h> #endif #if defined(__FreeBSD__) @@ -1301,6 +1307,8 @@ static gboolean remmina_rdp_set_connection_type(rdpSettings *settings, guint32 t return TRUE; } +#ifdef GDK_WINDOWING_X11 +#if FREERDP_CHECK_VERSION(2, 3, 0) static gchar *remmina_get_rdp_kbd_remap(const gchar *keymap) { TRACE_CALL(__func__); @@ -1326,6 +1334,8 @@ static gchar *remmina_get_rdp_kbd_remap(const gchar *keymap) return rdp_kbd_remap; } +#endif +#endif static gboolean remmina_rdp_main(RemminaProtocolWidget *gp) { @@ -1341,7 +1351,9 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget *gp) gint gateway_port; gchar *datapath = NULL; gboolean status = TRUE; +#ifdef GDK_WINDOWING_X11 gchar *rdp_kbd_remap; +#endif gint i; gint desktopOrientation, desktopScaleFactor, deviceScaleFactor; @@ -1681,6 +1693,7 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget *gp) */ freerdp_performance_flags_split(rfi->settings); +#ifdef GDK_WINDOWING_X11 #if FREERDP_CHECK_VERSION(2, 3, 0) rdp_kbd_remap = remmina_get_rdp_kbd_remap(remmina_plugin_service->file_get_string(remminafile, "keymap")); if (rdp_kbd_remap != NULL) { @@ -1693,6 +1706,8 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget *gp) REMMINA_PLUGIN_DEBUG("rdp_keyboard_remapping_list: %s", rfi->settings->KeyboardRemappingList); } #endif +#endif + freerdp_settings_set_uint32(rfi->settings, FreeRDP_KeyboardLayout, remmina_rdp_settings_get_keyboard_layout()); if (remmina_plugin_service->file_get_int(remminafile, "console", FALSE)) diff --git a/plugins/rdp/rdp_plugin.h b/plugins/rdp/rdp_plugin.h index a9cf47e85..f48fab5a2 100644 --- a/plugins/rdp/rdp_plugin.h +++ b/plugins/rdp/rdp_plugin.h @@ -47,7 +47,11 @@ #include <freerdp/gdi/region.h> #include <freerdp/client/cliprdr.h> #include <freerdp/client/disp.h> +#ifdef GDK_WINDOWING_X11 #include <gdk/gdkx.h> +#else +#include <gdk/gdkwayland.h> +#endif #include <winpr/clipboard.h> @@ -155,18 +159,22 @@ struct rf_pointer { }; typedef struct rf_pointer rfPointer; +#ifdef RF_BITMAP struct rf_bitmap { rdpBitmap bitmap; Pixmap pixmap; cairo_surface_t * surface; }; typedef struct rf_bitmap rfBitmap; +#endif +#ifdef RF_GLYPH struct rf_glyph { rdpGlyph glyph; Pixmap pixmap; }; typedef struct rf_glyph rfGlyph; +#endif typedef enum { REMMINA_RDP_EVENT_TYPE_SCANCODE, diff --git a/plugins/x2go/x2go_plugin.c b/plugins/x2go/x2go_plugin.c index f8f7f1583..8f26f56b8 100644 --- a/plugins/x2go/x2go_plugin.c +++ b/plugins/x2go/x2go_plugin.c @@ -45,7 +45,11 @@ #include "common/remmina_plugin.h" #include <gtk/gtkx.h> +#ifdef GDK_WINDOWING_X11 #include <gdk/gdkx.h> +#else +#include <gdk/gdkwayland.h> +#endif #include <X11/Xlib.h> #include <X11/XKBlib.h> diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index eb1fec2e0..f9e880f7c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -171,10 +171,6 @@ if(WITH_MANPAGES) install(FILES remmina.1 DESTINATION ${CMAKE_INSTALL_FULL_MANDIR}/man1) endif() -find_package(X11) -include_directories(${X11_INCLUDE_DIR}) -target_link_libraries(remmina ${X11_LIBRARIES}) - target_link_libraries(remmina ${CMAKE_THREAD_LIBS_INIT}) if(Intl_FOUND) @@ -37,7 +37,11 @@ #include "config.h" +#ifdef GDK_WINDOWING_X11 #include <cairo/cairo-xlib.h> +#else +#include <cairo/cairo.h> +#endif #include <gdk/gdk.h> #include <gdk/gdkkeysyms.h> #include <glib/gi18n.h> diff --git a/src/remmina.c b/src/remmina.c index abc4a3144..2156bff30 100644 --- a/src/remmina.c +++ b/src/remmina.c @@ -36,7 +36,11 @@ #ifndef G_LOG_DOMAIN #define G_LOG_DOMAIN ((gchar*)"remmina") #endif /* G_LOG_DOMAIN */ +#ifdef GDK_WINDOWING_X11 #include <gdk/gdkx.h> +#else +#include <gdk/gdkwayland.h> +#endif #include <gio/gio.h> #include <glib/gi18n.h> #include <stdlib.h> diff --git a/src/remmina_plugin_manager.c b/src/remmina_plugin_manager.c index b9d5ee167..47af6536a 100644 --- a/src/remmina_plugin_manager.c +++ b/src/remmina_plugin_manager.c @@ -42,9 +42,11 @@ #include <gmodule.h> #include <gio/gio.h> #include <string.h> - +#ifdef GDK_WINDOWING_X11 #include <gdk/gdkx.h> - +#else +#include <gdk/gdkwayland.h> +#endif #include "remmina_public.h" #include "remmina_main.h" #include "remmina_file_manager.h" diff --git a/src/remmina_plugin_native.c b/src/remmina_plugin_native.c index 9961d5641..6e844fef1 100644 --- a/src/remmina_plugin_native.c +++ b/src/remmina_plugin_native.c @@ -39,7 +39,11 @@ #include <gio/gio.h> #include <string.h> +#ifdef GDK_WINDOWING_X11 #include <gdk/gdkx.h> +#else +#include <gdk/gdkwayland.h> +#endif #include "remmina_public.h" #include "remmina_file_manager.h" diff --git a/src/remmina_public.c b/src/remmina_public.c index 5c5c4640d..e20030dd7 100644 --- a/src/remmina_public.c +++ b/src/remmina_public.c @@ -55,6 +55,8 @@ #include <X11/Xlib.h> #include <X11/Xutil.h> #include <X11/Xatom.h> +#else +#include <gdk/gdkwayland.h> #endif #include "remmina_public.h" #include "remmina/remmina_trace_calls.h" |