]> git.0d.be Git - empathy.git/commitdiff
empathy-connectivity: only send the new state in the state-change signal
authorJonny Lamb <jonny.lamb@collabora.co.uk>
Wed, 19 Aug 2009 15:50:14 +0000 (16:50 +0100)
committerJonny Lamb <jonny.lamb@collabora.co.uk>
Wed, 19 Aug 2009 15:50:44 +0000 (16:50 +0100)
It can be assumed that the old state was always the opposite to the
new state, because the signal is only ever fired if the new state
differs from the old state.

Signed-off-by: Jonny Lamb <jonny.lamb@collabora.co.uk>
libempathy-gtk/empathy-presence-chooser.c
libempathy/empathy-connectivity.c
libempathy/empathy-idle.c

index b0668196b372d52b37aaa459547d1662e6c3fdd7..490ad898ad4b72a32aa0b4b5a3cb6ea46405f5f6 100644 (file)
@@ -713,7 +713,6 @@ presence_chooser_entry_focus_out_cb (EmpathyPresenceChooser *chooser,
 
 static void
 presence_chooser_connectivity_state_change (EmpathyConnectivity *connectivity,
-                                           gboolean old_online,
                                            gboolean new_online,
                                            EmpathyPresenceChooser *chooser)
 {
@@ -796,7 +795,7 @@ empathy_presence_chooser_init (EmpathyPresenceChooser *chooser)
        g_signal_connect (priv->connectivity, "state-change",
                G_CALLBACK (presence_chooser_connectivity_state_change),
                chooser);
-       presence_chooser_connectivity_state_change (priv->connectivity, FALSE,
+       presence_chooser_connectivity_state_change (priv->connectivity,
                empathy_connectivity_is_online (priv->connectivity), chooser);
 }
 
index 8c38cf2c3646abb026662b7814de9ca39b9325e8..82ac9c9cb6680ce4855782ce9596208abeecff39 100644 (file)
@@ -58,6 +58,23 @@ static EmpathyConnectivity *connectivity_singleton = NULL;
 
 G_DEFINE_TYPE (EmpathyConnectivity, empathy_connectivity, G_TYPE_OBJECT);
 
+static void
+connectivity_change_state (EmpathyConnectivity *connectivity,
+    gboolean new_state)
+{
+  EmpathyConnectivityPriv *priv;
+
+  priv = GET_PRIV (connectivity);
+
+  if (priv->connected == new_state)
+    return;
+
+  priv->connected = new_state;
+
+  g_signal_emit (connectivity, signals[STATE_CHANGE], 0,
+      priv->connected);
+}
+
 #ifdef HAVE_NM
 static void
 connectivity_nm_state_change_cb (NMClient *client,
@@ -65,7 +82,6 @@ connectivity_nm_state_change_cb (NMClient *client,
     EmpathyConnectivity *connectivity)
 {
   EmpathyConnectivityPriv *priv;
-  gboolean old_nm_connected;
   gboolean new_nm_connected;
   NMState state;
 
@@ -75,16 +91,12 @@ connectivity_nm_state_change_cb (NMClient *client,
     return;
 
   state = nm_client_get_state (priv->nm_client);
-  old_nm_connected = priv->connected;
   new_nm_connected = !(state == NM_STATE_CONNECTING
       || state == NM_STATE_DISCONNECTED);
 
   DEBUG ("New NetworkManager network state %d", state);
 
-  priv->connected = new_nm_connected;
-
-  g_signal_emit (connectivity, signals[STATE_CHANGE], 0,
-      old_nm_connected, new_nm_connected);
+  connectivity_change_state (connectivity, new_nm_connected);
 }
 #endif
 
@@ -223,9 +235,9 @@ empathy_connectivity_class_init (EmpathyConnectivityClass *klass)
         G_SIGNAL_RUN_LAST,
         0,
         NULL, NULL,
-        _empathy_marshal_VOID__BOOLEAN_BOOLEAN,
+        _empathy_marshal_VOID__BOOLEAN,
         G_TYPE_NONE,
-        2, G_TYPE_BOOLEAN, G_TYPE_BOOLEAN, NULL);
+        1, G_TYPE_BOOLEAN, NULL);
 
   g_object_class_install_property (oclass,
       PROP_USE_CONN,
@@ -294,8 +306,7 @@ empathy_connectivity_set_use_conn (EmpathyConnectivity *connectivity,
     }
   else
     {
-      g_signal_emit (connectivity, signals[STATE_CHANGE], 0,
-          FALSE, TRUE);
+      connectivity_change_state (connectivity, TRUE);
     }
 
   g_object_notify (G_OBJECT (connectivity), "use-conn");
index c3e6b0177a3539a81da678920e00a5ac4068324e..f408cf69bb4bc2601f23ab6a913a54f6b69ceb06 100644 (file)
@@ -226,7 +226,6 @@ idle_session_status_changed_cb (DBusGProxy    *gs_proxy,
 
 static void
 idle_state_change_cb (EmpathyConnectivity *connectivity,
-                     gboolean old_online,
                      gboolean new_online,
                      EmpathyIdle *idle)
 {
@@ -234,7 +233,7 @@ idle_state_change_cb (EmpathyConnectivity *connectivity,
 
        priv = GET_PRIV (idle);
 
-       if (old_online && !new_online) {
+       if (!new_online) {
                /* We are no longer connected */
                DEBUG ("Disconnected: Save state %d (%s)",
                                priv->state, priv->status);
@@ -243,7 +242,7 @@ idle_state_change_cb (EmpathyConnectivity *connectivity,
                priv->saved_status = g_strdup (priv->status);
                empathy_idle_set_state (idle, TP_CONNECTION_PRESENCE_TYPE_OFFLINE);
        }
-       else if (!old_online && new_online
+       else if (new_online
                        && priv->saved_state != TP_CONNECTION_PRESENCE_TYPE_UNSET) {
                /* We are now connected */
                DEBUG ("Reconnected: Restore state %d (%s)",