C++20 renamed the `std::memory_order::memory_order_*` enum constants to `std::memory_order::*`.
https://en.cppreference.com/w/cpp/atomic/memory_order
C++17 supports:
`std::memory_order_relaxed`
`std::memory_order::memory_order_relaxed`
But C++20 supports:
`std::memory_order_relaxed`
`std::memory_order::memory_order::relaxed`
Thus, `std::memory_order_relaxed` is the only shared name if we want to support compiling Firefox with -std=c++17 and -std=c++20 as we transition mozilla-central from C++17 to C++20.
Differential Revision: https://phabricator.services.mozilla.com/D208963
Extend the sync IPC timeout mechanism in CompositorManagerChild to
additionally cover UiCompositorControllerChild. As
UiCompositorControllerChild runs on the Android UI thread, we ensure
GPUProcessManager::KillProcess dispatches to the gecko main thread.
Along with the previous patch in this series this should provide us
with crash reports when the Android UI thread is hung waiting for the
GPU process to reply.
Differential Revision: https://phabricator.services.mozilla.com/D202167
When sync IPC under the top-level PCompositorManager protocol does not
reply within a certain time threshold we purposefully kill the GPU
process. While this allows the user to recover from a stuck GPU
process, we have little visibility about the underlying cause.
This patch makes it so that we generate a paired minidump for the GPU
and parent processes prior to killing the GPU process in
GPUProcessHost::KillHard(). The implementation roughly follows the
equivalent for content processes in ContentParent::KillHard().
As the GPU process can be purposefully killed during normal operation,
and because generating minidumps can be expensive, we are careful to
only do so when the new argument aGenerateMinidump is true. We
additionally remove the aReason argument as it is unused (and
currently innacurate in some places).
As these minidumps may not automatically submitted we limit the
minidumps generation to twice per session in order to avoid
accumulating a large number of unsubmitted minidumps on disk.
Differential Revision: https://phabricator.services.mozilla.com/D202166
When the Android frontend attempts to pause or resume the compositor
there is a chance this may fail. When this happens, the compositor
will automatically be reinitialized. However, it will currently be
reinitialized in the previous state, not the state the frontend
intended. For example, if the compositor fails to resume then it will
be reinitialized but remain in a paused state, displaying a blank
screen to the user.
To avoid this, we update the value of mCompositorPaused prior to
attempting to pause or resume the compositor. This means when
NotifyCompositorCreated eventually gets called, it knows the correct
state in which to initialize the compositor.
Differential Revision: https://phabricator.services.mozilla.com/D202165
Before this patch, extensions with "incognito":"split" could not be
loaded at all. With this patch, we accept such extensions, but default
to "not_allowed". This prevents users from installing the extension in
private browsing mode (including permanent private browsing mode), but
at least it enables users to use the extension in regular browsing mode.
Differential Revision: https://phabricator.services.mozilla.com/D199800
This was for testing a variant of ToInteger added in bug 53847
that used slightly different types for its parameters.
That variant was removed in bug 777292 (6e30103582c44ea1ee8c25747bd3bed6671c0011)
but the duplicate test was not.
Differential Revision: https://phabricator.services.mozilla.com/D209016
AVCodecContext.channels doesn't exist anymore.
AVCodecContext.ch_layout.nb_channels is the equivalent.
AVFrame.channels also has switched to .ch_layout.nb_channels.
AVFrame.pkt_duration has switched to .duration (same meaning)
AVPacket can't be allocated on the stack, it's size isn't part of the ABI. It
needs to be allocated via av_packet_alloc, and freed using av_packet_free.
AVCodecContext.reordered_opaque doesn't exist anymore, we don't really need it.
Differential Revision: https://phabricator.services.mozilla.com/D206924
When the debugger creates a `RematerializedFrame` for an Ion frame, we need to invalidate
the Ion frame to ensure the rematerialized frame is destroyed in `FinishBailoutToBaseline`
(or the exception handler).
The debugger code could fail with OOM before doing this invalidation and in this case we
left a rematerialized frame in the activation's map after returning from the Ion frame.
Differential Revision: https://phabricator.services.mozilla.com/D208774
Note that this can't easily be unit-tested, because the tests can't
distinguish between the real `ENOSYS` from lack of kernel support and
the fake `ENOSYS` from the sandbox.
Differential Revision: https://phabricator.services.mozilla.com/D208823
This change utilizes components.conf to distinguish between the contract implementations of nsISessionStoreFunctions per platform.
Differential Revision: https://phabricator.services.mozilla.com/D206904
This feature is added as "recommended", and added to every presets. This will
allow us to disable it if we really want to.
If the "native allocations" feature is enabled, we still force the installation
of the memory hooks even if we don't have this feature to not break the native
allocations feature.
Differential Revision: https://phabricator.services.mozilla.com/D206789
Otherwise we start painting the window too early, which after
bug 1891063 causes the non-client area to be filled, but we don't paint
anything on top.
Differential Revision: https://phabricator.services.mozilla.com/D208898