summaryrefslogtreecommitdiff
path: root/src/proxyWorker.js
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2014-06-05 16:04:03 -0700
committerAlon Zakai <alonzakai@gmail.com>2014-06-05 16:04:03 -0700
commite543d370ae643bba784002a93e283591573ab252 (patch)
tree1ebd7ce49bbc1f21af1ebd4c5b1e4bb41fba4689 /src/proxyWorker.js
parent5652d5678fc9bda3cecd9431e77063bc90755b58 (diff)
generalize context proxying to support not just 2d contexts
Diffstat (limited to 'src/proxyWorker.js')
-rw-r--r--src/proxyWorker.js40
1 files changed, 22 insertions, 18 deletions
diff --git a/src/proxyWorker.js b/src/proxyWorker.js
index cfe0c26e..225b4493 100644
--- a/src/proxyWorker.js
+++ b/src/proxyWorker.js
@@ -43,24 +43,28 @@ document.createElement = function document_createElement(what) {
}
};
canvas.getContext = function canvas_getContext(type) {
- assert(type == '2d');
- return {
- getImageData: function(x, y, w, h) {
- assert(x == 0 && y == 0 && w == canvas.width && h == canvas.height);
- canvas.ensureData();
- return {
- width: canvas.data.width,
- height: canvas.data.height,
- data: new Uint8Array(canvas.data.data) // TODO: can we avoid this copy?
- };
- },
- putImageData: function(image, x, y) {
- canvas.ensureData();
- assert(x == 0 && y == 0 && image.width == canvas.width && image.height == canvas.height);
- canvas.data.data.set(image.data); // TODO: can we avoid this copy?
- postMessage({ target: 'canvas', op: 'render', image: canvas.data });
- }
- };
+ postMessage({ target: 'canvas', op: 'getContext', type: type });
+ if (type === '2d') {
+ return {
+ getImageData: function(x, y, w, h) {
+ assert(x == 0 && y == 0 && w == canvas.width && h == canvas.height);
+ canvas.ensureData();
+ return {
+ width: canvas.data.width,
+ height: canvas.data.height,
+ data: new Uint8Array(canvas.data.data) // TODO: can we avoid this copy?
+ };
+ },
+ putImageData: function(image, x, y) {
+ canvas.ensureData();
+ assert(x == 0 && y == 0 && image.width == canvas.width && image.height == canvas.height);
+ canvas.data.data.set(image.data); // TODO: can we avoid this copy?
+ postMessage({ target: 'canvas', op: 'render', image: canvas.data });
+ }
+ };
+ } else {
+ return new WebGLWorker();
+ }
};
canvas.boundingClientRect = {};
canvas.getBoundingClientRect = function canvas_getBoundingClientRect() {