subsession-client-example: Move the call to bus unwatch to the callback 26/285126/2
authorAdam Michalski <a.michalski2@partner.samsung.com>
Tue, 6 Dec 2022 12:27:18 +0000 (13:27 +0100)
committerAdam Michalski <a.michalski2@partner.samsung.com>
Tue, 6 Dec 2022 14:30:41 +0000 (15:30 +0100)
Change-Id: I8e54fa4aff6fb92ff0fe8e8f00f2c663cf73a93c

tests/client_example/main.cpp

index 174bbc9137ebb5097f2b293ce847d404d0a21c48..5c71a4b171a26c490ca475f9333265de5b6b3990 100644 (file)
@@ -44,6 +44,8 @@ typedef struct {
        subsession_event_type_e event;
 } test_user_data_cb_t;
 
+subsession_watch_context watch_ctx;
+
 volatile test_user_data userD[usernames.size()];
 
 int callback_pending_reference = 0;
@@ -314,6 +316,12 @@ void sessiond_started_callback(void)
        sessiondReady = true;
        g_cond_signal(&cond);
        g_mutex_unlock(&mutex);
+
+       /* Unregister so that the event doesn't happen
+        * again if sessiond dies and reappears.
+        */
+       if (subsession_unregister_bus_watch_callback(&watch_ctx) != SUBSESSION_ERROR_NONE)
+               printf("Error while unregistering dbus name watch callback!\n");
 }
 
 int main(int argc, char *argv[])
@@ -324,8 +332,7 @@ int main(int argc, char *argv[])
        GMainLoop *loop = g_main_loop_new(NULL, FALSE);
        GThread *loop_thread = g_thread_new("mainloop thread", (GThreadFunc) g_main_loop_run, loop);
 
-       printf("Waiting for sessiond daemon to initialize...");
-       subsession_watch_context watch_ctx;
+       printf("Waiting for sessiond daemon to initialize...\n");
        if (subsession_register_bus_watch_callback(&watch_ctx, sessiond_started_callback) != SUBSESSION_ERROR_NONE)
                return EXIT_FAILURE;
 
@@ -334,9 +341,6 @@ int main(int argc, char *argv[])
                g_cond_wait(&cond, &mutex);
        g_mutex_unlock(&mutex);
 
-       if (subsession_unregister_bus_watch_callback(&watch_ctx) != SUBSESSION_ERROR_NONE)
-               return EXIT_FAILURE;
-
        ///===================================///
        printf("Test program start\nGetting initial user list... ");