]> git.parisson.com Git - pdf.js.git/commitdiff
Add dependency for dependecies on sub getIRQueue
authorJulian Viereck <julian.viereck@gmail.com>
Fri, 16 Sep 2011 07:11:23 +0000 (00:11 -0700)
committerJulian Viereck <julian.viereck@gmail.com>
Fri, 16 Sep 2011 07:11:23 +0000 (00:11 -0700)
pdf.js
worker.js

diff --git a/pdf.js b/pdf.js
index faac047b3e0f52b45fe9e7f1ae8d95a73176fc29..0d74598edf887abd98d5c5d529e99883a6c29fa0 100644 (file)
--- a/pdf.js
+++ b/pdf.js
@@ -4167,11 +4167,15 @@ var PartialEvaluator = (function() {
   };
 
   constructor.prototype = {
-    getIRQueue: function(stream, xref, resources, queue, handler, uniquePrefix) {
+    getIRQueue: function(stream, xref, resources, queue, handler, 
+                          uniquePrefix, dependency) {
 
       function insertDependency(depList) {
         fnArray.push("dependency");
         argsArray.push(depList);
+        for (var i = 0; i < depList.length; i++) {
+          dependency.push(depList);
+        }
       }
 
       function buildPaintImageXObject(image, inline) {
@@ -4243,6 +4247,7 @@ var PartialEvaluator = (function() {
       }
 
       var fnArray = queue.fnArray, argsArray = queue.argsArray;
+      var dependency = dependency || [];
       
       resources = xref.fetchIfRef(resources) || new Dict();
       var xobjs = xref.fetchIfRef(resources.get('XObject')) || new Dict();
@@ -4273,10 +4278,15 @@ var PartialEvaluator = (function() {
 
                 // Type1 is TilingPattern
                 if (typeNum == 1) {
-                  // TODO: Add dependency here.
                   // Create an IR of the pattern code.
+                  var depIdx = dependency.length;
                   var codeIR = this.getIRQueue(pattern, xref,
-                                    dict.get('Resources'), {}, handler, uniquePrefix);
+                                    dict.get('Resources'), {}, handler, 
+                                    uniquePrefix, dependency);
+                  
+                  // Add the dependencies that are required to execute the
+                  // codeIR.
+                  insertDependency(dependency.slice(depIdx));
                   
                   args = TilingPattern.getIR(codeIR, dict, args);
                 } 
@@ -4313,9 +4323,14 @@ var PartialEvaluator = (function() {
                 argsArray.push([ matrix, bbox ]);
                 
                 // This adds the IRQueue of the xObj to the current queue.
+                var depIdx = dependency.length;
+                
                 this.getIRQueue(xobj, xref, xobj.dict.get('Resources'), queue,
-                                         handler, uniquePrefix);
+                                         handler, uniquePrefix, dependency);
 
+               // Add the dependencies that are required to execute the
+               // codeIR.
+               insertDependency(dependency.slice(depIdx));
 
                 fn = "paintFormXObjectEnd";
                 args = [];
index 021114683aa494a663553150f040b8b96560c339..eabdf66e3a028c8aa62203ffd53ea3d82e6ab98b 100644 (file)
--- a/worker.js
+++ b/worker.js
@@ -149,6 +149,10 @@ var Promise = (function() {
     },
     
     then: function(callback) {
+      if (!callback) {
+        throw "Requiring callback" + this.name;
+      }
+      
       // If the promise is already resolved, call the callback directly.
       if (this.isResolved) {
         var data = this.data;