|
|
9ef9d9 |
--- vinagre-3.22.0/plugins/rdp/vinagre-rdp-tab.c
|
|
|
9ef9d9 |
+++ vinagre-3.22.0/plugins/rdp/vinagre-rdp-tab.c
|
|
|
9ef9d9 |
@@ -79,7 +79,7 @@ struct _VinagreRdpTabPrivate
|
|
|
9ef9d9 |
|
|
|
9ef9d9 |
G_DEFINE_TYPE (VinagreRdpTab, vinagre_rdp_tab, VINAGRE_TYPE_TAB)
|
|
|
9ef9d9 |
|
|
|
9ef9d9 |
-static void open_freerdp (VinagreRdpTab *rdp_tab);
|
|
|
9ef9d9 |
+static gboolean open_freerdp (VinagreRdpTab *rdp_tab);
|
|
|
9ef9d9 |
static void setup_toolbar (VinagreRdpTab *rdp_tab);
|
|
|
9ef9d9 |
static void vinagre_rdp_tab_set_scaling (VinagreRdpTab *tab,
|
|
|
9ef9d9 |
gboolean scaling);
|
|
|
9ef9d9 |
@@ -251,9 +251,8 @@ vinagre_rdp_tab_constructed (GObject *ob
|
|
|
9ef9d9 |
G_OBJECT_CLASS (vinagre_rdp_tab_parent_class)->constructed (object);
|
|
|
9ef9d9 |
|
|
|
9ef9d9 |
setup_toolbar (rdp_tab);
|
|
|
9ef9d9 |
- open_freerdp (rdp_tab);
|
|
|
9ef9d9 |
-
|
|
|
9ef9d9 |
- g_idle_add ((GSourceFunc) emit_delayed_signal, object);
|
|
|
9ef9d9 |
+ if (open_freerdp (rdp_tab))
|
|
|
9ef9d9 |
+ g_idle_add ((GSourceFunc) emit_delayed_signal, object);
|
|
|
9ef9d9 |
}
|
|
|
9ef9d9 |
|
|
|
9ef9d9 |
static void
|
|
|
9ef9d9 |
@@ -929,7 +928,6 @@ frdp_authenticate (freerdp *instance,
|
|
|
9ef9d9 |
}
|
|
|
9ef9d9 |
else
|
|
|
9ef9d9 |
{
|
|
|
9ef9d9 |
- vinagre_tab_remove_from_notebook (tab);
|
|
|
9ef9d9 |
#ifndef HAVE_FREERDP_1_2
|
|
|
9ef9d9 |
priv->authentication_cancelled = TRUE;
|
|
|
9ef9d9 |
#endif
|
|
|
9ef9d9 |
@@ -1196,7 +1194,7 @@ init_display (VinagreRdpTab *rdp_tab)
|
|
|
9ef9d9 |
rdp_tab);
|
|
|
9ef9d9 |
}
|
|
|
9ef9d9 |
|
|
|
9ef9d9 |
-static void
|
|
|
9ef9d9 |
+static gboolean
|
|
|
9ef9d9 |
open_freerdp (VinagreRdpTab *rdp_tab)
|
|
|
9ef9d9 |
{
|
|
|
9ef9d9 |
VinagreRdpTabPrivate *priv = rdp_tab->priv;
|
|
|
9ef9d9 |
@@ -1209,6 +1207,7 @@ open_freerdp (VinagreRdpTab *rdp_tab)
|
|
|
9ef9d9 |
gboolean connection_failed;
|
|
|
9ef9d9 |
guint authentication_attempts;
|
|
|
9ef9d9 |
#endif
|
|
|
9ef9d9 |
+ gboolean result = FALSE;
|
|
|
9ef9d9 |
|
|
|
9ef9d9 |
priv->events = g_queue_new ();
|
|
|
9ef9d9 |
|
|
|
9ef9d9 |
@@ -1244,7 +1243,7 @@ open_freerdp (VinagreRdpTab *rdp_tab)
|
|
|
9ef9d9 |
}
|
|
|
9ef9d9 |
}
|
|
|
9ef9d9 |
#ifdef HAVE_FREERDP_1_2
|
|
|
9ef9d9 |
- while (!success && authentication_errors < 3);
|
|
|
9ef9d9 |
+ while (!success && authentication_errors < 3 && !cancelled);
|
|
|
9ef9d9 |
#else
|
|
|
9ef9d9 |
while (!success &&
|
|
|
9ef9d9 |
priv->authentication_attempts < 3 &&
|
|
|
9ef9d9 |
@@ -1269,7 +1268,10 @@ open_freerdp (VinagreRdpTab *rdp_tab)
|
|
|
9ef9d9 |
{
|
|
|
9ef9d9 |
priv->authentication_attempts = 0;
|
|
|
9ef9d9 |
priv->update_id = g_timeout_add (5, (GSourceFunc) update, rdp_tab);
|
|
|
9ef9d9 |
+ result = TRUE;
|
|
|
9ef9d9 |
}
|
|
|
9ef9d9 |
+
|
|
|
9ef9d9 |
+ return result;
|
|
|
9ef9d9 |
}
|
|
|
9ef9d9 |
|
|
|
9ef9d9 |
static void
|