User:Roc/WorkerCanvasProposal: Difference between revisions
< User:Roc
Jump to navigation
Jump to search
(→WebIDL) |
(→WebIDL) |
||
| Line 20: | Line 20: | ||
WorkerCanvas transferControlToWorker(); | WorkerCanvas transferControlToWorker(); | ||
}; | }; | ||
partial interface HTMLImageElement { | partial interface HTMLImageElement { | ||
attribute (Blob or ImageBitmap) srcObject; | attribute (Blob or ImageBitmap) srcObject; | ||
Revision as of 22:59, 17 October 2013
WebIDL
[Constructor(unsigned long width, unsigned long height)]
interface WorkerCanvas {
readonly attribute unsigned long width;
readonly attribute unsigned long height;
void resize(unsigned long width, unsigned long height);
RenderingContext? getContext(DOMString contextId, any... arguments);
void toBlob(FileCallback? _callback, optional DOMString type, any... arguments);
ImageBitmap transferToImageBitmap();
};
partial interface RenderingContext {
void commit();
};
WorkerCanvas implements Transferable;
partial interface HTMLCanvasElement {
WorkerCanvas transferControlToWorker();
};
partial interface HTMLImageElement {
attribute (Blob or ImageBitmap) srcObject;
};
Spec changes
Structured clone of ImageBitmaps has to be defined; since they're immutable, it's straightforward. The implementation can share the underlying buffer data across threads. An ImageBitmap can also be implemented as the result of deferred rendering of a list of drawing commands.
transferControlToWorker behaves like transferControlToProxy in the current WHATWG spec. It's transferable, but transfer fails if transferred other than from the main thread to a worker. All its methods throw if not called on a worker, or if it's neutered.