Merge pull request #19760 from Snuffleupagus/OperatorList-transfers-bitmap

Also transfer `ImageBitmap`s for image masks and inline images
This commit is contained in:
Jonas Jenwald 2025-04-03 20:10:27 +02:00 committed by GitHub
commit 16c876569f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -768,18 +768,20 @@ class OperatorList {
switch (fnArray[i]) { switch (fnArray[i]) {
case OPS.paintInlineImageXObject: case OPS.paintInlineImageXObject:
case OPS.paintInlineImageXObjectGroup: case OPS.paintInlineImageXObjectGroup:
case OPS.paintImageMaskXObject: case OPS.paintImageMaskXObject: {
const arg = argsArray[i][0]; // First parameter in imgData. const { bitmap, data } = argsArray[i][0]; // First parameter in imgData.
if (arg.data?.buffer instanceof ArrayBuffer) { if (bitmap || data?.buffer) {
transfers.push(arg.data.buffer); transfers.push(bitmap || data.buffer);
} }
break; break;
case OPS.constructPath: }
case OPS.constructPath: {
const [, [data], minMax] = argsArray[i]; const [, [data], minMax] = argsArray[i];
if (data) { if (data) {
transfers.push(data.buffer, minMax.buffer); transfers.push(data.buffer, minMax.buffer);
} }
break; break;
}
case OPS.paintFormXObjectBegin: case OPS.paintFormXObjectBegin:
const [matrix, bbox] = argsArray[i]; const [matrix, bbox] = argsArray[i];
if (matrix) { if (matrix) {