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
path: root/src
diff options
context:
space:
mode:
authorAntenore Gatta <antenore@simbiosi.org>2018-09-26 01:18:09 +0300
committerAntenore Gatta <antenore@simbiosi.org>2018-09-26 01:18:09 +0300
commitae97f143a0ab0920bb0aac79035eda778f7b938d (patch)
treecff41b42732083f77e03ba0a030f93a01a3cc4c0 /src
parent648800c0ec3bb86db6b27faa7ff047fd41036718 (diff)
Do not register socket plugins when X11 is not available
Diffstat (limited to 'src')
-rw-r--r--src/remmina_plugin_manager.c16
-rw-r--r--src/remmina_plugin_manager.h1
2 files changed, 14 insertions, 3 deletions
diff --git a/src/remmina_plugin_manager.c b/src/remmina_plugin_manager.c
index 73da6db3a..424ea9f23 100644
--- a/src/remmina_plugin_manager.c
+++ b/src/remmina_plugin_manager.c
@@ -128,7 +128,18 @@ static void init_settings_cache(RemminaPlugin *plugin)
static gboolean remmina_plugin_manager_register_plugin(RemminaPlugin *plugin)
{
TRACE_CALL(__func__);
-
+ gboolean usegtksocket = FALSE;
+ /* TODO: usegtksocket should be defined inside the plugin, not tested here */
+ usegtksocket = (g_strcmp0 (plugin->name, "ST") == 0 ||
+ g_strcmp0 (plugin->name, "XDMCP") == 0 ||
+ g_strcmp0 (plugin->name, "NX") == 0 ) ? TRUE : FALSE;
+ if (remmina_gtksocket_available() == FALSE && usegtksocket == TRUE) {
+ // We don't have an X11 display, so GtkSocket will not work
+ remmina_public_send_notification("remmina-x11-notsupported",
+ _("X11 backend not available"),
+ _("XWayland or Xorg are required"));
+ return FALSE;
+ }
if (plugin->type == REMMINA_PLUGIN_TYPE_SECRET) {
if (remmina_secret_plugin) {
g_print("Remmina plugin %s (type=%s) bypassed.\n", plugin->name,
@@ -141,11 +152,10 @@ static gboolean remmina_plugin_manager_register_plugin(RemminaPlugin *plugin)
g_ptr_array_add(remmina_plugin_table, plugin);
g_ptr_array_sort(remmina_plugin_table, (GCompareFunc)remmina_plugin_manager_compare_func);
- /* g_print("Remmina plugin %s (type=%s) registered.\n", plugin->name, _(remmina_plugin_type_name[plugin->type])); */
return TRUE;
}
-static gboolean remmina_gtksocket_available()
+gboolean remmina_gtksocket_available()
{
GdkDisplayManager* dm;
GdkDisplay* d;
diff --git a/src/remmina_plugin_manager.h b/src/remmina_plugin_manager.h
index 7684286c2..e8648a514 100644
--- a/src/remmina_plugin_manager.h
+++ b/src/remmina_plugin_manager.h
@@ -54,6 +54,7 @@ RemminaFilePlugin* remmina_plugin_manager_get_export_file_handler(RemminaFile *r
RemminaSecretPlugin* remmina_plugin_manager_get_secret_plugin(void);
const gchar *remmina_plugin_manager_get_canonical_setting_name(const RemminaProtocolSetting* setting);
gboolean remmina_plugin_manager_is_encrypted_setting(RemminaProtocolPlugin *pp, const char *setting);
+gboolean remmina_gtksocket_available();
extern RemminaPluginService remmina_plugin_manager_service;