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>2018-02-20 23:45:16 +0300
committerGiovanni Panozzo <giovanni@panozzo.it>2018-02-21 11:38:41 +0300
commit8c82ca36e8e40633c3ea898cf182f0e2e1f3644b (patch)
tree87b9be01438114e1aa9224df08d9ae76dfeecc4a /remmina-plugins/rdp/rdp_plugin.c
parent30a06ef19547b238d799c20240d699763273e4ff (diff)
Fix clipboard cleanup, fixes issue #1484
Diffstat (limited to 'remmina-plugins/rdp/rdp_plugin.c')
-rw-r--r--remmina-plugins/rdp/rdp_plugin.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/remmina-plugins/rdp/rdp_plugin.c b/remmina-plugins/rdp/rdp_plugin.c
index 139689bcd..9a8bf92fe 100644
--- a/remmina-plugins/rdp/rdp_plugin.c
+++ b/remmina-plugins/rdp/rdp_plugin.c
@@ -1191,7 +1191,13 @@ static gboolean remmina_rdp_close_connection(RemminaProtocolWidget* gp)
TRACE_CALL(__func__);
rfContext* rfi = GET_PLUGIN_DATA(gp);
freerdp* instance;
- RemminaPluginRdpUiObject* ui;
+
+ if (!remmina_plugin_service->is_main_thread()) {
+ g_printf("WARNING: %s called on a subthread, may not work or crash remmina.\n", __func__);
+ }
+
+ /* Immediately deatch GTK clipboard from this connection */
+ remmina_rdp_cliprdr_detach_owner(gp);
if (freerdp_get_last_error(rfi->instance->context) == 0x10005) {
remmina_plugin_service->protocol_plugin_set_error(gp, "Another user connected to the server (%s), forcing the disconnection of the current connection.", rfi->settings->ServerHostname);
@@ -1206,13 +1212,6 @@ static gboolean remmina_rdp_close_connection(RemminaProtocolWidget* gp)
}
- /* Cleanup clipboard: we cannot leave clipboard requesting data to this
- * connection */
- ui = g_new0(RemminaPluginRdpUiObject, 1);
- ui->type = REMMINA_RDP_UI_CLIPBOARD;
- ui->clipboard.type = REMMINA_RDP_UI_CLIPBOARD_DETACH_OWNER;
- remmina_rdp_event_queue_ui_sync_retint(gp, ui);
-
if (instance) {
if ( rfi->connected ) {
freerdp_disconnect(instance);