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:
authorGiovanni Panozzo <giovanni@panozzo.it>2014-08-20 02:56:08 +0400
committerGiovanni Panozzo <giovanni@panozzo.it>2014-08-20 02:56:08 +0400
commit8403036e10bb97c22cc10ab87d7d6b08aa395453 (patch)
treee6556b72e5856f03dcb689ae42932f406d63c457 /remmina-plugins/rdp
parent06f9875322d66a45d0edd6d54f597963c8a4e4dd (diff)
Enable sound. Fixes #296 #281.
Diffstat (limited to 'remmina-plugins/rdp')
-rw-r--r--remmina-plugins/rdp/rdp_plugin.c80
-rw-r--r--remmina-plugins/rdp/rdp_plugin.h1
2 files changed, 29 insertions, 52 deletions
diff --git a/remmina-plugins/rdp/rdp_plugin.c b/remmina-plugins/rdp/rdp_plugin.c
index bf854b204..70caea7d3 100644
--- a/remmina-plugins/rdp/rdp_plugin.c
+++ b/remmina-plugins/rdp/rdp_plugin.c
@@ -257,7 +257,7 @@ static BOOL remmina_rdp_pre_connect(freerdp* instance)
rfi->rfx_context = rfx_context_new(FALSE);
}
-
+ freerdp_client_load_addins(instance->context->channels, instance->settings);
freerdp_channels_pre_connect(instance->context->channels, instance);
rfi->clrconv = freerdp_clrconv_new(CLRCONV_ALPHA);
@@ -634,7 +634,12 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp)
gchar* value;
gint rdpdr_num;
gint drdynvc_num;
- gint rdpsnd_num;
+ gint rdpsnd_rate;
+ gint rdpsnd_channel;
+ char *rdpsnd_params[3];
+ int rdpsnd_nparams;
+ char rdpsnd_param1[16];
+ char rdpsnd_param2[16];
const gchar* cs;
RemminaFile* remminafile;
rfContext* rfi;
@@ -770,7 +775,7 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp)
rfi->settings->FastPathOutput = True;
drdynvc_num = 0;
- rdpsnd_num = 0;
+
cs = remmina_plugin_service->file_get_string(remminafile, "sound");
if (g_strcmp0(cs, "remote") == 0)
@@ -779,39 +784,33 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp)
}
else if (g_str_has_prefix(cs, "local"))
{
-/* Removed becuase of issue #280 - TODO: fix this
- cs = strchr(cs, ',');
+ rdpsnd_nparams = 0;
+ rdpsnd_params[rdpsnd_nparams++] = "rdpsnd";
+
+ cs = strchr(cs, ',');
if (cs)
{
- snprintf(rfi->rdpsnd_options, sizeof(rfi->rdpsnd_options), "%s", cs + 1);
- s = strchr(rfi->rdpsnd_options, ',');
-
- if (s)
- *s++ = '\0';
-
- rfi->rdpsnd_data[rdpsnd_num].size = sizeof(RDP_PLUGIN_DATA);
- rfi->rdpsnd_data[rdpsnd_num].data[0] = "rate";
- rfi->rdpsnd_data[rdpsnd_num].data[1] = rfi->rdpsnd_options;
- rdpsnd_num++;
-
- if (s)
+ rdpsnd_rate = atoi(cs + 1);
+ if (rdpsnd_rate > 1000 && rdpsnd_rate < 150000)
{
- rfi->rdpsnd_data[rdpsnd_num].size = sizeof(RDP_PLUGIN_DATA);
- rfi->rdpsnd_data[rdpsnd_num].data[0] = "channel";
- rfi->rdpsnd_data[rdpsnd_num].data[1] = s;
- rdpsnd_num++;
+ snprintf( rdpsnd_param1, sizeof(rdpsnd_param1), "rate:%d", rdpsnd_rate );
+ rdpsnd_params[rdpsnd_nparams++] = rdpsnd_param1;
+ cs = strchr(cs +1, ',');
+ if (cs)
+ {
+ rdpsnd_channel = atoi(cs + 1);
+ if (rdpsnd_channel >= 1 && rdpsnd_channel <= 2)
+ {
+ snprintf( rdpsnd_param2, sizeof(rdpsnd_param2), "channel:%d", rdpsnd_channel );
+ rdpsnd_params[rdpsnd_nparams++] = rdpsnd_param2;
+ }
+ }
}
}
-*/
- /* remmina_rdp_load_plugin(rfi->channels, rfi->settings, "rdpsnd", rfi->rdpsnd_data); */
- remmina_rdp_load_plugin(rfi->instance->context->channels, rfi->settings, "rdpsnd", rfi->settings);
-/* TODO: Fix/Check this - Removed because of issue #280
- rfi->drdynvc_data[drdynvc_num].size = sizeof(RDP_PLUGIN_DATA);
- rfi->drdynvc_data[drdynvc_num].data[0] = "audin";
- drdynvc_num++;
-*/
+ remmina_rdp_add_static_channel(rfi->settings, rdpsnd_nparams, (char**) rdpsnd_params);
+
}
if (drdynvc_num)
@@ -819,19 +818,7 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp)
remmina_rdp_load_plugin(rfi->instance->context->channels, rfi->settings, "drdynvc", rfi->drdynvc_data);
}
- if (!remmina_plugin_service->file_get_int(remminafile, "disableclipboard", FALSE))
- {
-
- if (!freerdp_static_channel_collection_find(rfi->settings, "cliprdr"))
- {
- char* params[1];
- params[0] = "cliprdr";
- remmina_rdp_add_static_channel(rfi->settings, 1, (char**) params);
- }
-
- // Old version: remmina_rdp_load_plugin(rfi->instance->context->channels, rfi->settings, "cliprdr", NULL);
-
- }
+ rfi->settings->RedirectClipboard = ( remmina_plugin_service->file_get_int(remminafile, "disableclipboard", FALSE) ? FALSE: TRUE );
rdpdr_num = 0;
cs = remmina_plugin_service->file_get_string(remminafile, "sharefolder");
@@ -873,15 +860,6 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp)
}
- for (index = 0; index < rfi->settings->StaticChannelCount; index++)
- {
- args = rfi->settings->StaticChannelArray[index];
- remmina_rdp_load_static_channel_addin(rfi->instance->context->channels, rfi->settings, args->argv[0], args);
-
- }
-
-
-
if (!freerdp_connect(rfi->instance))
{
if (!rfi->user_cancelled)
diff --git a/remmina-plugins/rdp/rdp_plugin.h b/remmina-plugins/rdp/rdp_plugin.h
index a6487d813..ef00f5347 100644
--- a/remmina-plugins/rdp/rdp_plugin.h
+++ b/remmina-plugins/rdp/rdp_plugin.h
@@ -102,7 +102,6 @@ struct rf_context
RDP_PLUGIN_DATA rdpdr_data[5];
RDP_PLUGIN_DATA drdynvc_data[5];
- RDP_PLUGIN_DATA rdpsnd_data[5];
gchar rdpsnd_options[20];
RFX_CONTEXT* rfx_context;