Bug 651192 will get us to point where support multi-threaded plugin renderers, but not concurrently with the main thread because the non-main-threads proxy SetCurrent back to main. The purpose of this bug is to stop doing that.
Rob and I discussed the following model
- when the plugin sets the "will SetCurrent off-main-thread" flag, gecko creates a dedicated SetCurrent thread
- the SetCurrent thread gets a direct channel to the browser, never blocking on plugin main thread
- all SetCurrent calls from all threads are proxied to the SetCurrent thread. We can asynchronously proxy calls by copying the underlying surface, but initially it's probably easier to synchronously proxy.
This should no longer be relevant with the new implementation of the model. SetCurrent now works fine off other threads.