include zerocopy in minion postMessage
This commit is contained in:
parent
a753e12d3a
commit
cbf23bc351
2 changed files with 12 additions and 7 deletions
|
|
@ -61,16 +61,18 @@ const funcs = {
|
|||
reply({ seq, union: codec.encode([]) });
|
||||
return;
|
||||
}
|
||||
let state = { zeros: [] };
|
||||
let polys = codec.decode(data.polys);
|
||||
let union = POLY.union(polys, data.minarea || 0, true);
|
||||
reply({ seq, union: codec.encode(union) });
|
||||
reply({ seq, union: codec.encode(union) }, state.zeros);
|
||||
},
|
||||
|
||||
topShells: (data, seq) => {
|
||||
let top = codec.decode(data.top, {full: true});
|
||||
let {z, count, offset1, offsetN, fillOffset, opt} = data;
|
||||
kiri.driver.FDM.doTopShells(z, top, count, offset1, offsetN, fillOffset, opt);
|
||||
reply({ seq, top: codec.encode(top, {full: true}) });
|
||||
let state = { zeros: [] };
|
||||
reply({ seq, top: codec.encode(top, {full: true}) }, state.zeros);
|
||||
},
|
||||
|
||||
fill: (data, seq) => {
|
||||
|
|
@ -111,6 +113,7 @@ const funcs = {
|
|||
while (i < points.length) {
|
||||
realp[p++] = base.newPoint(points[i++], points[i++], points[i++]).round(3);
|
||||
}
|
||||
let state = { zero: [] };
|
||||
let output = [];
|
||||
base.sliceZ(z, realp, {
|
||||
...options,
|
||||
|
|
@ -120,7 +123,7 @@ const funcs = {
|
|||
// lines do not pass codec properly (for now)
|
||||
delete rec.lines;
|
||||
}
|
||||
reply({ seq, output: codec.encode(output) });
|
||||
reply({ seq, output: codec.encode(output) }, state.zeros);
|
||||
});
|
||||
},
|
||||
|
||||
|
|
|
|||
|
|
@ -100,8 +100,9 @@ kiri.minions = {
|
|||
let polyper = Math.ceil(polys.length / concurrent);
|
||||
let running = 0;
|
||||
let union = [];
|
||||
let state = { zeros: [] };
|
||||
let receiver = function(data) {
|
||||
let polys = codec.decode(data.union);
|
||||
let polys = codec.decode(data.union, state);
|
||||
union.appendAll(polys);
|
||||
if (--running === 0) {
|
||||
resolve(POLY.union(union, minarea, true));
|
||||
|
|
@ -113,7 +114,7 @@ kiri.minions = {
|
|||
cmd: "union",
|
||||
minarea,
|
||||
polys: codec.encode(polys.slice(i, i + polyper))
|
||||
}, receiver);
|
||||
}, receiver, state.zeros);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
|
@ -124,9 +125,10 @@ kiri.minions = {
|
|||
resolve(POLY.fillArea(polys, angle, spacing, [], minLen, maxLen));
|
||||
return;
|
||||
}
|
||||
const state = { zeros: [] };
|
||||
minwork.queue({
|
||||
cmd: "fill",
|
||||
polys: codec.encode(polys),
|
||||
polys: codec.encode(polys, state),
|
||||
angle, spacing, minLen, maxLen
|
||||
}, data => {
|
||||
let arr = data.fill;
|
||||
|
|
@ -138,7 +140,7 @@ kiri.minions = {
|
|||
}
|
||||
output.appendAll(fill);
|
||||
resolve(fill);
|
||||
});
|
||||
}, state.zeros);
|
||||
});
|
||||
},
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue