Closed Bug 930908 Opened 11 years ago Closed 10 years ago

Shumway needs a chrome-only, two-way reentrant synchronous communications channel between main thread and workers


(Core :: DOM: Workers, defect, P1)






(Reporter: till, Assigned: khuey)



(Whiteboard: [Shumway:P1] [shumway:m2] [js:p1])

I think we discussed this with all CC-ed people by now, so here goes what I think is the consensus we agreed upon:

For Shumway to be able to run in a worker thread, it needs to be able to synchronously communicate with the main thread for various reasons:

- Canvas2D drawing capability is required, which isn't available on workers. Flash enables immediate readback of rendering results of arbitrary sub trees of the display list via BitmapData#draw(), so this has to be synchronous
- Flash exposes fairly detailed measurements of text metrics to script. Again, this is exposed synchronously, and extensively used
- Flash allows for synchronous, reentrant communication between JS in the embedding page and the Flash element

The first two use cases could obviously be dealt with by implementing other, planned, platform functionality. The last one, however, is something that we probably won't ever want to expose to web content. Or to addons, I guess.

I'm setting P1 on this because it is the most important missing functionality in the platform for us by far. Without moving off the main thread, we can't come close to a useful experience, let alone a pleasant one. Additionally, there is quite a bit of work to be done on our side that we can only effectively work on after we have at least a prototype implementation of this.
Depends on: 949992
Assigning to khuey as he's working on it.
Assignee: bent.mozilla → khuey
Whiteboard: [Shumway:P1] → [Shumway:P1] [shumway:m2]
Whiteboard: [Shumway:P1] [shumway:m2] → [Shumway:P1] [shumway:m2] [js:p1]
Till: do we still need this feature if Shumway uses an e10s process instead of a ShumwayWorker?
Flags: needinfo?(till)
We do not, thanks.
Closed: 10 years ago
Flags: needinfo?(till)
Resolution: --- → INVALID
You need to log in before you can comment on or make changes to this bug.