diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/trg-client.c | 7 | ||||
-rw-r--r-- | src/trg-client.h | 1 | ||||
-rw-r--r-- | src/trg-main-window.c | 4 |
3 files changed, 10 insertions, 2 deletions
diff --git a/src/trg-client.c b/src/trg-client.c index ec53e3e..0f6731d 100644 --- a/src/trg-client.c +++ b/src/trg-client.c @@ -169,6 +169,12 @@ gint64 trg_client_get_rpc_version(TrgClient *tc) return session_get_rpc_version(priv->session); } +void trg_client_inc_connid(TrgClient *tc) +{ + TrgClientPrivate *priv = TRG_CLIENT_GET_PRIVATE(tc); + g_atomic_int_inc(&priv->connid); +} + void trg_client_set_session(TrgClient * tc, JsonObject * session) { TrgClientPrivate *priv = TRG_CLIENT_GET_PRIVATE(tc); @@ -177,7 +183,6 @@ void trg_client_set_session(TrgClient * tc, JsonObject * session) json_object_unref(priv->session); } else { session_get_version(session, &priv->version); - g_atomic_int_inc(&priv->connid); } priv->session = session; diff --git a/src/trg-client.h b/src/trg-client.h index 1ac46ed..4ef93f9 100644 --- a/src/trg-client.h +++ b/src/trg-client.h @@ -169,6 +169,7 @@ guint trg_client_get_minimised_interval(TrgClient *tc); void trg_client_set_interval(TrgClient *tc, guint interval); void trg_client_set_minimised_interval(TrgClient *tc, guint interval); void trg_client_set_activeonlyupdate(TrgClient *tc, gboolean activeOnlyUpdate); +void trg_client_inc_connid(TrgClient *tc); G_END_DECLS diff --git a/src/trg-main-window.c b/src/trg-main-window.c index 2d63112..a031d4b 100644 --- a/src/trg-main-window.c +++ b/src/trg-main-window.c @@ -461,7 +461,8 @@ void connect_cb(GtkWidget * w, gpointer data) { if (w) profile = (JsonObject*)g_object_get_data(G_OBJECT(w), "profile"); - disconnect_cb(NULL, data); + if (trg_client_is_connected(priv->client)) + disconnect_cb(NULL, data); if (profile && currentProfile != profile) trg_prefs_set_profile(prefs, profile); @@ -490,6 +491,7 @@ void connect_cb(GtkWidget * w, gpointer data) { } trg_status_bar_push_connection_msg(priv->statusBar, _("Connecting...")); + trg_client_inc_connid(priv->client); dispatch_async(priv->client, session_get(), on_session_get, data); } |