From 2ba31eb953d18bb818a87caddcbca80bc8a1d37d Mon Sep 17 00:00:00 2001 From: Sergey Poznyakoff Date: Fri, 24 May 2019 10:51:39 +0000 Subject: Don't remove finished startup components. Just mark them with status_finished. * src/ctl.c (pies_comp_mode_str): Add pies_comp_startup and pies_comp_shutdown. * src/piesctl.c (mode_trans): Likewise. * src/progman.c (progman_startup_phase): Test the status of pies_comp_startup components. (progman_waiting_p): Test status instead of pid>0 to select running components. (progman_cleanup): Set status of the finished startup component to status_finished, instead of removing it. * src/comp.c (loaded): Remove unused variable. (component_config_commit): Remove special handling for pies_comp_startup. --- (limited to 'src/comp.c') diff --git a/src/comp.c b/src/comp.c index 2346306..25f2657 100644 --- a/src/comp.c +++ b/src/comp.c @@ -24,11 +24,6 @@ struct complist struct component *tail; }; -/* 0 on the first load, and 1 on all subsequent reloads. Tells the - component_config_commit whether we're starting from scratch or just - updating an already loaded configuration */ -static int loaded; - static struct complist comp_list[2]; static int cur; @@ -540,35 +535,21 @@ component_config_commit (void) comp_count = i; /* Rearrange components, registering entries for the new ones */ - for (comp = list->head, i = 0; comp; ) + for (comp = list->head, i = 0; comp; comp = comp->next, i++) { - struct component *next = comp->next; - if (loaded && comp->mode == pies_comp_startup) + match = complist_find_match (prev, comp); + if (match) { - /* Ignore startup components */ - component_unlink (comp); + component_merge (match, comp); + component_unlink (match); + match->listidx = cur; + component_link (match, comp->prev); component_free (comp); + comp = match; } - else - { - match = complist_find_match (prev, comp); - if (match) - { - component_merge (match, comp); - component_unlink (match); - match->listidx = cur; - component_link (match, comp->prev); - component_free (comp); - comp = match; - } - comp_array[i] = comp; - comp->arridx = i; - i++; - } - comp = next; + comp_array[i] = comp; + comp->arridx = i; } - /* Adjust comp_count */ - comp_count = i; /* Mark orphaned progs for termination */ list = &comp_list[prev]; @@ -585,8 +566,6 @@ component_config_commit (void) for (comp = comp_list[cur].head; comp; comp = comp->next) if (!comp->prog) register_prog (comp); - - loaded = 1; } static int -- cgit v0.9.0.3