diff options
author | Giovanni Panozzo <giovanni@panozzo.it> | 2018-02-20 23:45:16 +0300 |
---|---|---|
committer | Giovanni Panozzo <giovanni@panozzo.it> | 2018-02-21 11:38:41 +0300 |
commit | 8c82ca36e8e40633c3ea898cf182f0e2e1f3644b (patch) | |
tree | 87b9be01438114e1aa9224df08d9ae76dfeecc4a /remmina-plugins/rdp/rdp_plugin.c | |
parent | 30a06ef19547b238d799c20240d699763273e4ff (diff) |
Fix clipboard cleanup, fixes issue #1484
Diffstat (limited to 'remmina-plugins/rdp/rdp_plugin.c')
-rw-r--r-- | remmina-plugins/rdp/rdp_plugin.c | 15 |
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); |