Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/Remmina/Remmina.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Vasut <marex@denx.de>2022-10-29 14:46:41 +0300
committerFabio Estevam <festevam@denx.de>2022-10-29 16:30:37 +0300
commit5dc5d3809b110feea6c25a1b0044db9e64af0830 (patch)
treed91be327c29c1af2eb4ead998b4b94716046f22b
parent91a8d9c40fa3618ae4ca7dbead79dba56b38cb1d (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.c4
-rw-r--r--plugins/rdp/CMakeLists.txt13
-rw-r--r--plugins/rdp/rdp_event.c4
-rw-r--r--plugins/rdp/rdp_graphics.c8
-rw-r--r--plugins/rdp/rdp_plugin.c15
-rw-r--r--plugins/rdp/rdp_plugin.h8
-rw-r--r--plugins/x2go/x2go_plugin.c4
-rw-r--r--src/CMakeLists.txt4
-rw-r--r--src/rcw.c4
-rw-r--r--src/remmina.c4
-rw-r--r--src/remmina_plugin_manager.c6
-rw-r--r--src/remmina_plugin_native.c4
-rw-r--r--src/remmina_public.c2
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)
diff --git a/src/rcw.c b/src/rcw.c
index 4099ea3a9..9d27ceef2 100644
--- a/src/rcw.c
+++ b/src/rcw.c
@@ -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"