diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/analysis/loading.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/analysis/loading.c b/src/analysis/loading.c index b8fbeea..7e2f9ee 100644 --- a/src/analysis/loading.c +++ b/src/analysis/loading.c @@ -106,6 +106,8 @@ typedef struct _exploring_group { GBinContent *original; /* Contenu binaire initial */ + size_t remaining; /* Nombre de tâches restantes */ + wgroup_id_t wid; /* Groupe d'appartenance */ GBinContent **contents; /* Contenus reconnus dispos. */ @@ -657,7 +659,6 @@ static void g_content_explorer_ack(GContentExplorer *explorer, GExploringWork *w { wgroup_id_t wid; /* Groupe d'appartenance */ exploring_group *group; /* Groupe d'opération concerné */ - GWorkQueue *queue; /* Gestionnaire de différés */ bool empty; /* Fin de l'exploration ? */ wid = g_exploring_work_get_group_id(work); @@ -667,9 +668,9 @@ static void g_content_explorer_ack(GContentExplorer *explorer, GExploringWork *w group = g_content_explorer_find_group(explorer, wid); assert(group != NULL); - queue = get_work_queue(); + assert(group->remaining > 0); - empty = g_work_queue_is_empty(queue, group->wid); + empty = (--group->remaining == 0); g_mutex_unlock(&explorer->mutex); @@ -721,6 +722,8 @@ wgroup_id_t g_content_explorer_create_group(GContentExplorer *explorer, GBinCont group->original = content; g_object_ref(G_OBJECT(content)); + group->remaining = 1; + group->wid = result; group->contents = NULL; @@ -827,6 +830,8 @@ void g_content_explorer_populate_group(GContentExplorer *explorer, wgroup_id_t w /* Relancement des explorations */ + group->remaining++; + work = g_exploring_work_new(content); g_exploring_work_set_group_id(work, group->wid); |