| 3220 | } |
| 3221 | |
| 3222 | function fireCallbacksForOps(group) { |
| 3223 | // Calls delayed callbacks and cursorActivity handlers until no |
| 3224 | // new ones appear |
| 3225 | var callbacks = group.delayedCallbacks, |
| 3226 | i = 0 |
| 3227 | do { |
| 3228 | for (; i < callbacks.length; i++) { |
| 3229 | callbacks[i].call(null) |
| 3230 | } |
| 3231 | for (var j = 0; j < group.ops.length; j++) { |
| 3232 | var op = group.ops[j] |
| 3233 | if (op.cursorActivityHandlers) { |
| 3234 | while (op.cursorActivityCalled < op.cursorActivityHandlers.length) { |
| 3235 | op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm) |
| 3236 | } |
| 3237 | } |
| 3238 | } |
| 3239 | } while (i < callbacks.length) |
| 3240 | } |
| 3241 | |
| 3242 | function finishOperation(op, endCb) { |
| 3243 | var group = op.ownsGroup |