diff options
author | Antenore Gatta <antenore@simbiosi.org> | 2018-09-26 01:18:09 +0300 |
---|---|---|
committer | Antenore Gatta <antenore@simbiosi.org> | 2018-09-26 01:18:09 +0300 |
commit | ae97f143a0ab0920bb0aac79035eda778f7b938d (patch) | |
tree | cff41b42732083f77e03ba0a030f93a01a3cc4c0 /src | |
parent | 648800c0ec3bb86db6b27faa7ff047fd41036718 (diff) |
Do not register socket plugins when X11 is not available
Diffstat (limited to 'src')
-rw-r--r-- | src/remmina_plugin_manager.c | 16 | ||||
-rw-r--r-- | src/remmina_plugin_manager.h | 1 |
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; |