session: Remove deselect_previous_service()
authorDaniel Wagner <daniel.wagner@bmw-carit.de>
Tue, 20 Sep 2011 14:24:01 +0000 (16:24 +0200)
committerDaniel Wagner <daniel.wagner@bmw-carit.de>
Thu, 22 Sep 2011 13:45:50 +0000 (15:45 +0200)
The deselect_and_disconnect() function should be called
from session_changed() and not in the select_and_connect()
code path. All disconnect and connect decision are
initiate from session_changed(). This makes the code flow more
symetric.

Note that we break here a Online -> Offline transision, we are
going to fix this later again.

src/session.c

index a06c014..224e666 100644 (file)
@@ -778,7 +778,7 @@ static gboolean call_connect(gpointer user_data)
        return FALSE;
 }
 
-static void deselect_and_disconnect(struct connman_session *session)
+static void deselect_service(struct connman_session *session)
 {
        struct session_info *info = session->info;
        struct connman_service *service;
@@ -803,13 +803,9 @@ static void deselect_and_disconnect(struct connman_session *session)
                g_timeout_add_seconds(0, call_disconnect, service);
 }
 
-static void deselect_previous_service(struct connman_session *session,
-                                       struct service_entry *entry)
+static void deselect_and_disconnect(struct connman_session *session)
 {
-       struct session_info *info = session->info;
-
-       if (info->entry != NULL && info->entry != entry)
-               deselect_and_disconnect(session);
+       deselect_service(session);
 }
 
 static void select_online_service(struct connman_session *session,
@@ -858,7 +854,6 @@ static void select_service(struct connman_session *session,
 {
        DBG("session %p service %p", session, entry->service);
 
-       deselect_previous_service(session, entry);
 
        if (is_online(entry->state) == TRUE)
                select_online_service(session, entry);