core: second request to terminate does a hard exit()
This commit is contained in:
10
src/main.c
10
src/main.c
@@ -119,6 +119,7 @@ name_lost_cb (GDBusConnection *connection,
|
|||||||
int
|
int
|
||||||
main (int argc, char *argv[])
|
main (int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
GMainLoop *inner;
|
||||||
GError *err = NULL;
|
GError *err = NULL;
|
||||||
guint name_id;
|
guint name_id;
|
||||||
|
|
||||||
@@ -156,6 +157,11 @@ main (int argc, char *argv[])
|
|||||||
loop = g_main_loop_new (NULL, FALSE);
|
loop = g_main_loop_new (NULL, FALSE);
|
||||||
g_main_loop_run (loop);
|
g_main_loop_run (loop);
|
||||||
|
|
||||||
|
/* Clear the global variable, so that subsequent requests to
|
||||||
|
* exit succeed. */
|
||||||
|
inner = loop;
|
||||||
|
loop = NULL;
|
||||||
|
|
||||||
if (manager) {
|
if (manager) {
|
||||||
GTimer *timer;
|
GTimer *timer;
|
||||||
|
|
||||||
@@ -167,7 +173,7 @@ main (int argc, char *argv[])
|
|||||||
timer = g_timer_new ();
|
timer = g_timer_new ();
|
||||||
while (mm_manager_num_modems (manager) &&
|
while (mm_manager_num_modems (manager) &&
|
||||||
g_timer_elapsed (timer, NULL) < (gdouble)MAX_SHUTDOWN_TIME_SECS) {
|
g_timer_elapsed (timer, NULL) < (gdouble)MAX_SHUTDOWN_TIME_SECS) {
|
||||||
GMainContext *ctx = g_main_loop_get_context (loop);
|
GMainContext *ctx = g_main_loop_get_context (inner);
|
||||||
|
|
||||||
g_main_context_iteration (ctx, FALSE);
|
g_main_context_iteration (ctx, FALSE);
|
||||||
g_usleep (50);
|
g_usleep (50);
|
||||||
@@ -182,6 +188,8 @@ main (int argc, char *argv[])
|
|||||||
g_timer_destroy (timer);
|
g_timer_destroy (timer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_main_loop_unref (inner);
|
||||||
|
|
||||||
g_bus_unown_name (name_id);
|
g_bus_unown_name (name_id);
|
||||||
|
|
||||||
mm_info ("ModemManager is shut down");
|
mm_info ("ModemManager is shut down");
|
||||||
|
Reference in New Issue
Block a user