diff options
author | Antenore Gatta <antenore@simbiosi.org> | 2019-08-15 00:54:28 +0300 |
---|---|---|
committer | Antenore Gatta <antenore@simbiosi.org> | 2019-08-15 00:54:28 +0300 |
commit | 2536f93293d1be98c57a4fff84707f7f9ef9f5d1 (patch) | |
tree | 56e6dba0b8f8b12ed0d5a5e2b7d110e0bcfc4d6c /plugins | |
parent | bf27b6dccd6d7f796565c61d536e8218436948bc (diff) | |
parent | d4e114498d492583a103c81fa07d3f3eff111728 (diff) |
Merge branch 'feature/printred' into 'master'
rdpr channel initialization for special devices sharing. Closes #1955
Closes #1955
See merge request Remmina/Remmina!1892
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/rdp/rdp_plugin.c | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/plugins/rdp/rdp_plugin.c b/plugins/rdp/rdp_plugin.c index 951f18d61..a523585be 100644 --- a/plugins/rdp/rdp_plugin.c +++ b/plugins/rdp/rdp_plugin.c @@ -784,10 +784,13 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp) const gchar* cs; RemminaFile* remminafile; rfContext* rfi = GET_PLUGIN_DATA(gp); + rdpChannels* channels; gchar *gateway_host; gint gateway_port; gint desktopOrientation, desktopScaleFactor, deviceScaleFactor; + channels = rfi->instance->context->channels; + remminafile = remmina_plugin_service->protocol_plugin_get_file(gp); #if defined(PROXY_TYPE_IGNORE) @@ -1103,6 +1106,9 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp) drive = (RDPDR_DRIVE*)malloc(sizeof(RDPDR_DRIVE)); ZeroMemory(drive, sizeof(RDPDR_DRIVE)); + rfi->settings->DeviceRedirection = TRUE; + remmina_rdp_load_static_channel_addin(channels, rfi->settings, "rdpdr", rfi->settings); + s = strrchr( cs, '/' ); if ( s == NULL || s[1] == 0 ) s = remmina_rdp_plugin_default_drive_name; @@ -1120,13 +1126,13 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp) } if (remmina_plugin_service->file_get_int(remminafile, "shareprinter", FALSE)) { - RDPDR_PRINTER* printer; - printer = (RDPDR_PRINTER*)malloc(sizeof(RDPDR_PRINTER)); - ZeroMemory(printer, sizeof(RDPDR_PRINTER)); - - printer->Type = RDPDR_DTYP_PRINT; rfi->settings->DeviceRedirection = TRUE; + remmina_rdp_load_static_channel_addin(channels, rfi->settings, "rdpdr", rfi->settings); + + RDPDR_PRINTER* printer; + printer = (RDPDR_PRINTER*) calloc(1, sizeof(RDPDR_PRINTER)); + printer->Type = RDPDR_DTYP_PRINT; rfi->settings->RedirectPrinters = TRUE; const gchar* pn = remmina_plugin_service->file_get_string(remminafile, "printername"); @@ -1148,12 +1154,14 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp) smartcard->Type = RDPDR_DTYP_SMARTCARD; + rfi->settings->DeviceRedirection = TRUE; + remmina_rdp_load_static_channel_addin(channels, rfi->settings, "rdpdr", rfi->settings); + const gchar* sn = remmina_plugin_service->file_get_string(remminafile, "smartcardname"); if ( sn != NULL && sn[0] != '\0' ) { smartcard->Name = _strdup(sn); } - rfi->settings->DeviceRedirection = TRUE; rfi->settings->RedirectSmartCards = TRUE; freerdp_device_collection_add(rfi->settings, (RDPDR_DEVICE*)smartcard); @@ -1173,6 +1181,9 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp) serial->Type = RDPDR_DTYP_SERIAL; + rfi->settings->DeviceRedirection = TRUE; + remmina_rdp_load_static_channel_addin(channels, rfi->settings, "rdpdr", rfi->settings); + const gchar* sn = remmina_plugin_service->file_get_string(remminafile, "serialname"); if ( sn != NULL && sn[0] != '\0' ) { serial->Name = _strdup(sn); @@ -1192,7 +1203,6 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp) serial->Permissive = _strdup("permissive"); } - rfi->settings->DeviceRedirection = TRUE; rfi->settings->RedirectSerialPorts = TRUE; freerdp_device_collection_add(rfi->settings, (RDPDR_DEVICE*)serial); @@ -1206,6 +1216,8 @@ static gboolean remmina_rdp_main(RemminaProtocolWidget* gp) parallel->Type = RDPDR_DTYP_PARALLEL; rfi->settings->DeviceRedirection = TRUE; + remmina_rdp_load_static_channel_addin(channels, rfi->settings, "rdpdr", rfi->settings); + rfi->settings->RedirectParallelPorts = TRUE; const gchar* pn = remmina_plugin_service->file_get_string(remminafile, "parallelname"); |