summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Wildemann <gta04@metalstrolche.de>2019-08-04 21:17:06 +0200
committerStefan Wildemann <gta04@metalstrolche.de>2019-08-04 21:17:06 +0200
commit95d1a69425d3d6d616e7402c58fb6d2869a1a16d (patch)
tree531aedd7e9af522fdb12b20b09a610ee890f906c
parent72d975cb9677c96e9316dfe8705a90bff3d50fe6 (diff)
downloadnavit-95d1a69425d3d6d616e7402c58fb6d2869a1a16d.tar.gz
Add progress display for multipolygon processing
-rw-r--r--navit/maptool/osm.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/navit/maptool/osm.c b/navit/maptool/osm.c
index 2ec3ec667..426236bbc 100644
--- a/navit/maptool/osm.c
+++ b/navit/maptool/osm.c
@@ -3040,6 +3040,7 @@ static void process_multipolygons_member(void *func_priv, void *relation_priv, s
multipolygon->outer[multipolygon->outer_count]=item_bin_dup(member);
multipolygon->outer_count ++;
}
+ processed_ways ++;
i=item_order_by_type(member->type);
if(i<multipolygon->order)
multipolygon->order=i;
@@ -3137,6 +3138,7 @@ static gpointer process_multipolygons_setup_worker (gpointer data) {
struct process_multipolygon_setup_thread * me = (struct process_multipolygon_setup_thread*) data;
fprintf(stderr,"worker %d up\n", me->number);
while((ib=g_async_queue_pop (me->queue)) != &killer) {
+ processed_relations ++;
//relid=item_bin_get_relationid(ib);
//fprintf(stderr,"worker %d processing %lld\n", me->number, relid);
process_multipolygons_setup_one(ib, me->relations, me->relations_func, &(me->multipolygons));
@@ -3230,6 +3232,7 @@ void process_multipolygons(FILE *in, FILE *coords, FILE *ways, FILE *ways_index,
int i;
struct relations **relations;
GList **multipolygons = NULL;
+ sig_alrm(0);
relations = g_malloc0(sizeof(struct relations *) * thread_count);
for(i=0; i < thread_count; i ++)
@@ -3244,6 +3247,10 @@ void process_multipolygons(FILE *in, FILE *coords, FILE *ways, FILE *ways_index,
* This even saves a lot of main memory, as we can process every result from
* every thread at once completely. Since we know it's self containing
*/
+ sig_alrm(0);
+ processed_relations=0;
+ processed_ways=0;
+ sig_alrm(0);
for( i=0; i < thread_count; i ++) {
if(coords)
fseek(coords, 0,SEEK_SET);
@@ -3256,6 +3263,8 @@ void process_multipolygons(FILE *in, FILE *coords, FILE *ways, FILE *ways_index,
relations_destroy(relations[i]);
}
g_free(relations);
+ sig_alrm(0);
+ sig_alrm_end();
}
struct turn_restriction {