From b2d7df29147594612395ec3974818a6fc2123da4 Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Fri, 15 Jan 2016 19:57:23 +0100 Subject: [PATCH 1/2] Added microphone redirection --- remmina-plugins/rdp/rdp_plugin.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/remmina-plugins/rdp/rdp_plugin.c b/remmina-plugins/rdp/rdp_plugin.c index 12ff94cd1a..fce4affab5 100644 --- a/remmina-plugins/rdp/rdp_plugin.c +++ b/remmina-plugins/rdp/rdp_plugin.c @@ -904,6 +904,17 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp) } + if ( remmina_plugin_service->file_get_int(remminafile, "microphone", FALSE) ? FALSE: TRUE ) + { + char* p[1]; + int count; + + count = 1; + p[0] = "audin"; + + freerdp_client_add_dynamic_channel(rfi->settings, count, p); + } + rfi->settings->RedirectClipboard = ( remmina_plugin_service->file_get_int(remminafile, "disableclipboard", FALSE) ? FALSE: TRUE ); cs = remmina_plugin_service->file_get_string(remminafile, "sharefolder"); @@ -1276,6 +1287,7 @@ static const RemminaProtocolSetting remmina_rdp_advanced_settings[] = { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "exec", N_("Startup program"), FALSE, NULL, NULL }, { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "execpath", N_("Startup path"), FALSE, NULL, NULL }, { REMMINA_PROTOCOL_SETTING_TYPE_TEXT, "loadbalanceinfo", N_("Load Balance Info"), FALSE, NULL, NULL }, + { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "microphone", N_("Redirect local microphone"), FALSE, NULL, NULL }, { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "shareprinter", N_("Share local printers"), FALSE, NULL, NULL }, { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "sharesmartcard", N_("Share smartcard"), FALSE, NULL, NULL }, { REMMINA_PROTOCOL_SETTING_TYPE_CHECK, "disableclipboard", N_("Disable clipboard sync"), FALSE, NULL, NULL }, From 7feb6e1357ba44c8d99cd72936e928885cbc27cf Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Sun, 17 Jan 2016 10:41:34 +0100 Subject: [PATCH 2/2] Fixed rdp_file.c support for microphone. Fixed inverted microphone settings read. --- remmina-plugins/rdp/rdp_file.c | 5 +++++ remmina-plugins/rdp/rdp_plugin.c | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/remmina-plugins/rdp/rdp_file.c b/remmina-plugins/rdp/rdp_file.c index a9aae28956..7d1c729245 100644 --- a/remmina-plugins/rdp/rdp_file.c +++ b/remmina-plugins/rdp/rdp_file.c @@ -93,6 +93,10 @@ static void remmina_rdp_file_import_field(RemminaFile* remminafile, const gchar* break; } } + else if (g_strcmp0(key, "microphone") == 0) + { + remmina_plugin_service->file_set_int(remminafile, "microphone", (atoi (value) == 1)); + } else if (g_strcmp0(key, "redirectprinters") == 0) { remmina_plugin_service->file_set_int(remminafile, "shareprinter", (atoi (value) == 1)); @@ -295,6 +299,7 @@ gboolean remmina_rdp_file_export_channel(RemminaFile* remminafile, FILE* fp) fprintf(fp, "audiomode:i:1\r\n"); else fprintf(fp, "audiomode:i:2\r\n"); + fprintf(fp, "microphone:i:%i\r\n", remmina_plugin_service->file_get_int(remminafile, "microphone", FALSE) ? 1 : 0); fprintf(fp, "redirectprinters:i:%i\r\n", remmina_plugin_service->file_get_int(remminafile, "shareprinter", FALSE) ? 1 : 0); fprintf(fp, "redirectsmartcard:i:%i\r\n", remmina_plugin_service->file_get_int(remminafile, "sharesmartcard", FALSE) ? 1 : 0); fprintf(fp, "redirectcomports:i:0\r\n"); diff --git a/remmina-plugins/rdp/rdp_plugin.c b/remmina-plugins/rdp/rdp_plugin.c index fce4affab5..f31a0dab4a 100644 --- a/remmina-plugins/rdp/rdp_plugin.c +++ b/remmina-plugins/rdp/rdp_plugin.c @@ -904,7 +904,7 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp) } - if ( remmina_plugin_service->file_get_int(remminafile, "microphone", FALSE) ? FALSE: TRUE ) + if ( remmina_plugin_service->file_get_int(remminafile, "microphone", FALSE) ? TRUE : FALSE ) { char* p[1]; int count;