fix incrememtal tile backup for unchanged chunks

This commit is contained in:
HF 2022-08-04 12:48:40 +02:00
parent f90c542046
commit 0a89bd83b3

View File

@ -160,23 +160,34 @@ export async function incrementialBackupRedis(
} }
const { abgr } = palette; const { abgr } = palette;
const compLength = Math.min(oldChunk.length, curChunk.length); const oldChunkLength = oldChunk.length;
tileBuffer = new Uint32Array(TILE_SIZE ** 2); const curChunkLength = curChunk.length;
if (oldChunkLength !== curChunkLength) {
tileBuffer = new Uint32Array(TILE_SIZE ** 2);
}
const compLength = Math.min(oldChunkLength, curChunkLength);
for (let i = 0; i < compLength; i += 1) { for (let i = 0; i < compLength; i += 1) {
const curPxl = curChunk[i]; const curPxl = curChunk[i];
if (oldChunk[i] !== curPxl) { if (oldChunk[i] !== curPxl) {
if (!tileBuffer) {
tileBuffer = new Uint32Array(TILE_SIZE ** 2);
}
tileBuffer[i] = abgr[curPxl & 0x3F]; tileBuffer[i] = abgr[curPxl & 0x3F];
} }
} }
const oldChunkLength = oldChunk.length; if (!tileBuffer) {
const curChunkLength = curChunk.length; continue;
}
for (let i = oldChunkLength; i < curChunkLength; i += 1) { for (let i = oldChunkLength; i < curChunkLength; i += 1) {
// current chunk longer than old chunk
tileBuffer[i] = abgr[curChunk[i] & 0x3F]; tileBuffer[i] = abgr[curChunk[i] & 0x3F];
} }
if (oldChunkLength > curChunkLength) { if (oldChunkLength > curChunkLength) {
// old chunk longer than current chunk
const blank = abgr[0]; const blank = abgr[0];
for (let i = curChunkLength; i < oldChunkLength; i += 1) { for (let i = curChunkLength; i < oldChunkLength; i += 1) {
if (oldChunk[i] !== 0) { if (oldChunk[i] !== 0) {