// before it stops and shedules a continue of execution.
var kExecutionTime = 50;
- // Number of IR commands to execute before checking
- // if we execute longer then `kExecutionTime`.
- var kExecutionTimeCheck = 500;
-
function constructor(canvasCtx, objs) {
this.ctx = canvasCtx;
this.current = new CanvasExtraState();
var i = executionStartIdx || 0;
var argsArrayLen = argsArray.length;
+ // Sometimes the IRQueue to execute is empty.
+ if (argsArrayLen == i) {
+ return i;
+ }
+
var executionEndIdx;
var startTime = Date.now();
var objs = this.objs;
- do {
- executionEndIdx = Math.min(argsArrayLen, i + kExecutionTimeCheck);
-
- for (i; i < executionEndIdx; i++) {
- if (fnArray[i] !== 'dependency') {
- this[fnArray[i]].apply(this, argsArray[i]);
- } else {
- var deps = argsArray[i];
- for (var n = 0, nn = deps.length; n < nn; n++) {
- var depObjId = deps[n];
-
- // If the promise isn't resolved yet, add the continueCallback
- // to the promise and bail out.
- if (!objs.isResolved(depObjId)) {
- objs.get(depObjId, continueCallback);
- return i;
- }
+ while (true) {
+ if (fnArray[i] !== 'dependency') {
+ this[fnArray[i]].apply(this, argsArray[i]);
+ } else {
+ var deps = argsArray[i];
+ for (var n = 0, nn = deps.length; n < nn; n++) {
+ var depObjId = deps[n];
+
+ // If the promise isn't resolved yet, add the continueCallback
+ // to the promise and bail out.
+ if (!objs.isResolved(depObjId)) {
+ objs.get(depObjId, continueCallback);
+ return i;
}
}
}
+ i++;
// If the entire IRQueue was executed, stop as were done.
if (i == argsArrayLen) {
// If the IRQueue isn't executed completly yet OR the execution time
// was short enough, do another execution round.
- } while (true);
+ }
},
endDrawing: function canvasGraphicsEndDrawing() {