Implemented DMABufSurfaceWrapper and VAAPIDisplayHolder as a versioned class templates
as they are going to be used by both system ffmpeg and bundled ffvpx decoders.
Differential Revision: https://phabricator.services.mozilla.com/D90555
Right now PipeWire is enabled when Wayland session is used regardless of an active Gtk backend (X11/Wayland).
Let's use PipeWire only when Wayland Gtk backend is used and disable it for X11 one to avoid possible regressions.
Differential Revision: https://phabricator.services.mozilla.com/D94588
We've already had a same method in media utils, so no need to keep this one. In addition, doing that can prevent the build ambiguous error when removing autoplay related files from `dom/media`.
Differential Revision: https://phabricator.services.mozilla.com/D95878
We've already had a same method in media utils, so no need to keep this one. In addition, doing that can prevent the build ambiguous error when removing autoplay related files from `dom/media`.
Differential Revision: https://phabricator.services.mozilla.com/D95878
Some WebrtcMediaDataEncoder methods are blocking and wait for platform encoder
operations to complete. Running them in one thread pool/task queue will lead
to dead lock.
Differential Revision: https://phabricator.services.mozilla.com/D94464
Calling emplace() on instance with existing value will cause assertion.
Since Error() can be called multiple times, assignment operator is the correct way.
Differential Revision: https://phabricator.services.mozilla.com/D94463
On Android, software H.264 video encoder accepts some sizes when configuring
but will crash later after frames are sent to the encoder. Use method provided
in API 21+ to validate the input size and avoid using software encoder on
earlier versions to prevent crashes.
Differential Revision: https://phabricator.services.mozilla.com/D94461
This addressed https://github.com/w3c/csswg-drafts/issues/5257.
The min-block-size or max-block-size should affect the inline size computed
through an aspect ratio.
I intentionally don't implement this for transferred {min|max}
block-size because
1. This is useful only if block-size is indefinite.
2. If block-size is indefinite, we may use the inline-size and aspect-ratio to
get the block-size, which makes block-size definite.
3. This means it is useful when both inline-size and block-size are
indefinite (e.g. auto).
In this case, we still resolve a possible inline-size by clamping it
between specified (and transferred) min and max inline-sizes. Then
we map this inline-size to block-size through aspect-ratio. This
transferred block-size should also be between specified (and
transferred) min and max block-sizes.
Differential Revision: https://phabricator.services.mozilla.com/D94911
The other fling acceleration restrictions make it so that there is no need for
this additional restriction anymore.
Removing this restriction allows a fling to be accelerated even if the previous
fling has been "spinning" for a while (a second or more), provided that the page
is still moving fast enough.
This matches Chrome's behavior.
Differential Revision: https://phabricator.services.mozilla.com/D95472
This avoids unexpected acceleration after a "fling, fling, touch-pause-fling" sequence.
The touch start timestamp is captured when we go from NOTHING to TOUCHING,
and the pan start timestamp is captured when we go from TOUCHING to PANNING.
Differential Revision: https://phabricator.services.mozilla.com/D95470
This should prevent most cases of unintended fling acceleration. For example,
when scrolling paragraph-by-paragraph via a series of short flings, we would
often accelerate the next fling even if the previous fling had already slowed
down almost to a stop. With this change, we will no longer trigger acceleration
in that scenario.
This also matches Chrome's behavior.
This patch does not add a new pref for the new velocity threshold.
Chrome also shares the same velocity threshold for both velocities.
Differential Revision: https://phabricator.services.mozilla.com/D95469
Implementing the Draw compositor via the native compositor interface
is simpler if the buffer age is passed into the top level render method.
Differential Revision: https://phabricator.services.mozilla.com/D95824
We scan for addon changes twice, once early in startup (usually with no scanning) and once after ui startup. We hold on to the startup data, and during both scans we restore that data into the addon location instances. The problem here is if we install a builtin in-between these scans. The new data from the install would get overwitten by the old data. In some cases this caused addons to disappear (e.g. old data has incorrect path). Other issues covered here is that we would never remove addon data for builtins removed from the system, and we would additionally mark builtins as sideloads, which caused other side effects (particularly with search addons) where we would not load the addon, but fortunately the search service later re-installes them.
Differential Revision: https://phabricator.services.mozilla.com/D95422
We should delayload DLLs that for APIs that are only used during registration
so that they aren't referenced during normal operation.
Differential Revision: https://phabricator.services.mozilla.com/D95609
We add new DLL registration code. This is a rather generic function that
permits the following:
* Registering multiple `CLSID`s for the same DLL;
* Registering an optional `AppID`. Registering an `AppID` allows us to use a
`DllSurrogate` to host the DLL out-of-process using Windows' built-in
`dllhost.exe`. I'll be using this feature in a future bug.
* Supporting all available threading modelsl;
* Capable of registering either inproc servers or inproc handlers;
* Using the transaction-based registry API so that we can cleanly rollback
during registration if any part(s) of it fail.
Differential Revision: https://phabricator.services.mozilla.com/D95606