(8) [final] modify main() to call correct clean sequence
authorkremlin <ian@kremlin.cc>
Tue, 5 Aug 2014 02:50:37 +0000 (21:50 -0500)
committerkremlin <ian@kremlin.cc>
Tue, 5 Aug 2014 02:50:37 +0000 (21:50 -0500)
main() now sets the signal handlers (via function from previous
commit) before establishing the GMainLoop as well as invoke the
proper clean()'s after unref'ing the loop. at this point all four
interfaces are at the same place structurally. builds all cases.

src/interfaces/localed/localed.c
src/interfaces/logind/logind.c
src/interfaces/timedated/timedated.c

index 27448acb59e0fa832ffb56a44ff6c6dca578a975..3fdb7cf73974c66e327593ca77edb0b7dbb57baf 100644 (file)
@@ -152,6 +152,8 @@ void set_signal_handlers() {
 
 int main() {
 
+       set_signal_handlers();
+
        localed_loop = g_main_loop_new(NULL, TRUE);
        localed_freeable = g_ptr_array_new();
 
@@ -165,11 +167,14 @@ int main() {
                                     NULL);
 
        g_main_loop_run(localed_loop);
+       /* runs until single g_main_loop_quit() call is raised inside <interface>_mem_clean() */
        g_main_loop_unref(localed_loop);
 
+       /* guaranteed unownable */
        g_bus_unown_name(bus_descriptor);
 
-       localed_mem_clean();
+       /* at this point no operations can occur with our data, it is safe to free it + its container */
+       g_ptr_array_free(localed_freeable, TRUE);
 
        return 0;
 }
index da9e24b58f22d3009aaf5188da9630616da6cafd..274bf16aa14da40ec78d71372351ab11be2d9c5f 100644 (file)
@@ -152,6 +152,8 @@ void set_signal_handlers() {
 
 int main() {
 
+    set_signal_handlers();
+
        logind_loop = g_main_loop_new(NULL, TRUE);
        logind_freeable = g_ptr_array_new();
 
@@ -165,11 +167,15 @@ int main() {
                                     NULL);
 
        g_main_loop_run(logind_loop);
+    /* runs until single g_main_loop_quit() call is raised inside <interface>_mem_clean() */
        g_main_loop_unref(logind_loop);
 
+    /* guaranteed unownable */
        g_bus_unown_name(bus_descriptor);
 
-       logind_mem_clean();
+    /* at this point no operations can occur with our data, it is safe to free it + its container */
+     g_ptr_array_free(logind_freeable, TRUE);
+
 
        return 0;
 }
index 32f040a2f775dd1f25048f78c7676eff030c12e4..a0d536de09c7ad9c7a8813f8339495eaff8c6b98 100644 (file)
@@ -152,6 +152,8 @@ void set_signal_handlers() {
 
 int main() {
 
+    set_signal_handlers();
+
        timedated_loop = g_main_loop_new(NULL, TRUE);
        timedated_freeable = g_ptr_array_new();
 
@@ -165,11 +167,14 @@ int main() {
                                     NULL);
 
        g_main_loop_run(timedated_loop);
+    /* runs until single g_main_loop_quit() call is raised inside <interface>_mem_clean() */
        g_main_loop_unref(timedated_loop);
 
+    /* guaranteed unownable */
        g_bus_unown_name(bus_descriptor);
 
-       timedated_mem_clean();
+    /* at this point no operations can occur with our data, it is safe to free it + its container */
+    g_ptr_array_free(timedated_freeable, TRUE);
 
        return 0;
 }