Blame SOURCES/vinagre-3.22.0-rdp-connection-cancel.patch

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