mirror of
https://github.com/mapbox/tippecanoe.git
synced 2025-03-25 13:17:38 +00:00
Set up and tear down the prefilter pipeline
This commit is contained in:
parent
d940eb1cef
commit
16df86c26e
35
tile.cpp
35
tile.cpp
@ -1243,6 +1243,18 @@ long long write_tile(FILE *geoms, long long *geompos_in, char *metabase, char *s
|
||||
*geompos_in = og;
|
||||
}
|
||||
|
||||
int prefilter_write = -1, prefilter_read = -1;
|
||||
pid_t prefilter_pid = 0;
|
||||
FILE *prefilter_fd = NULL;
|
||||
if (prefilter != NULL) {
|
||||
setup_filter(prefilter, &prefilter_write, &prefilter_read, &prefilter_pid, z, tx, ty);
|
||||
prefilter_fd = fdopen(prefilter_write, "w");
|
||||
if (prefilter_fd == NULL) {
|
||||
perror("freopen prefilter");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
|
||||
while (1) {
|
||||
signed char t;
|
||||
deserialize_byte_io(geoms, &t, geompos_in);
|
||||
@ -1449,7 +1461,7 @@ long long write_tile(FILE *geoms, long long *geompos_in, char *metabase, char *s
|
||||
decode_meta(m, metakeys, metavals, stringpool + pool_off[segment], tmp_layer, tmp_feature);
|
||||
tmp_layer.features.push_back(tmp_feature);
|
||||
|
||||
layer_to_geojson(stdout, tmp_layer, 0, 0, 0, false, true);
|
||||
layer_to_geojson(prefilter_fd, tmp_layer, 0, 0, 0, false, true);
|
||||
}
|
||||
|
||||
if (gamma > 0) {
|
||||
@ -1525,6 +1537,27 @@ long long write_tile(FILE *geoms, long long *geompos_in, char *metabase, char *s
|
||||
merge_previndex = index;
|
||||
}
|
||||
|
||||
if (prefilter != NULL) {
|
||||
if (fclose(prefilter_fd) != 0) {
|
||||
perror("fclose output to prefilter");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
if (close(prefilter_read) != 0) {
|
||||
perror("close output from prefilter");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
while (1) {
|
||||
int stat_loc;
|
||||
if (waitpid(prefilter_pid, &stat_loc, 0) < 0) {
|
||||
perror("waitpid for prefilter\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
if (WIFEXITED(stat_loc) || WIFSIGNALED(stat_loc)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
first_time = false;
|
||||
bool merge_successful = true;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user