X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fcore%2Fmanager.c;h=77eaa468d95d444db6a9f8a7640458e6e91d74e9;hp=c261b25fb658ad0f515afde1f309367c026863e5;hb=5b176ee064d9737fd933dfeb660d015c19649794;hpb=6bde0b3220e95a08cefb70846f73b2cf24b7734a diff --git a/src/core/manager.c b/src/core/manager.c index c261b25fb..77eaa468d 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -148,6 +148,9 @@ static int manager_setup_notify(Manager *m) { static int manager_jobs_in_progress_mod_timer(Manager *m) { struct itimerspec its; + if (m->jobs_in_progress_watch.type != WATCH_JOBS_IN_PROGRESS) + return 0; + zero(its); its.it_value.tv_sec = JOBS_IN_PROGRESS_WAIT_SEC; @@ -2373,8 +2376,10 @@ void manager_check_finished(Manager *m) { if (m->n_running_jobs == 0) manager_unwatch_jobs_in_progress(m); - if (hashmap_size(m->jobs) > 0) + if (hashmap_size(m->jobs) > 0) { + manager_jobs_in_progress_mod_timer(m); return; + } /* Notify Type=idle units that we are done now */ close_pipe(m->idle_pipe);