On Mon, 18 Nov 2013 16:47:08 -0000, James Graham <ja...@hoppipolla.co.uk> wrote:

On 18/11/13 16:36, matmarquis.com wrote:
I recall that some of the more
specific resistance was due to the complication involved in
implementing and testing existing media elements, but I can’t claim
to understand precisely what manner of browser-internal complications
`source` elements brought to the table.

The fundamental issue is atomicity; setting one or N attributes is an atomic operation from the point of view of script; creating N elements is not. This creates complexity because the algorithm has to deal with the possibility of DOM mutation changing the set of available sources before it has selected the correct one. I believe there was a proposal that simplified the semantics by ignoring mutations, but I hear it ran into problems with animated images, which I haven't understood in detail.

I agree that <source> as specified for <video> and initially for <picture> was a mess, but that doesn't have to be the case. The complexity was mainly caused by stateful algorithm exposed to JS, which is not necessary for <picture>.


It's *is* possible to have use N elements atomically.


I've specified a simplified <source> selection algorithm[1] that achieves this. It is atomic from JS perspective.

Atomicity is achieved by always scheduling the selection algorithm to run on next tick (event loop spin) after mutation. This way JS can perform several mutations in a row without worrying about race conditions.

The algorithm I've specified is also stateless and works correctly with incomplete data (e.g. if packet boundary happens to be inside <picture>).

AFAIK it makes it as easy to implement and as safe to use as src-N.

Simon, who initially raised concerns about use of <source> in <picture> found that solution acceptable[2].

I'd love to hear feedback about simplified, atomic <source> from other vendors.


[1] https://github.com/ResponsiveImagesCG/picture-element/issues/62#issuecomment-24479164
[2] http://lists.w3.org/Archives/Public/public-html/2013Sep/0185.html

--
regards, Kornel

Reply via email to