mAppendRunning is set prior the append task being queued; so it is possible that the segment parser loop hasn't yet been started, yet mAppendRunning is true.
Separate this diagnostic with a new flag ON A CLOSED TREE.
MozReview-Commit-ID: GgTyyltKOJr
- Introduce a more general version of ForEachNode that takes two actions
(pre-action and post-action).
- Express the one-action version of ForEachNode in terms of the two-action
version.
- Add TraversalFlag::Abort, which stops traversal immediately.
- Express DepthFirstSearch in terms of ForEachNode.
- Add ForEachNodePostOrder and DepthFirstSearchPostOrder.
- The new functions are all recursive, and traverse children in the order
provided by the node accessors. Adjust tests to reflect this.
- Refactor two APZCTreeManager functions, FindTargetNode and GetAPZCAtPoint,
to use the algorithms.
MozReview-Commit-ID: 83Y7psjkUWG
This patch introduces a small utility program to extract a guid from a shared library
or executable on windows to identify the correct symbol file to read in fix_stack_using_bpsyms.py.
In order for this to work correctly on windows, the library name provided by
MozDescribeCodeAddress needs to be a full path, so the LoadedImageName field
from the IMAGEHLP_MODULE64 structure is used here instead of the ModuleName
field.
The W3C spec indicates that while everything in MSE is asynchronous, the abort() command is to interrupt the current segment parser loop and have the reset parser loop synchronously completes the frames present in the input buffer.
This causes a fundamental issue that abort() will never result in a deterministic outcome as the segment parser loop may be in different condition.
We used to really attempt to abort the current operation, however there could have been a race in the order in which tasks were queued. As such, we now simply wait for the current appendBuffer to complete.
This also simplifies the code greatly, as we don't need to worry about pending concurrent appendBuffer.
The actually happens to be similar to the Chromium behavior.
Similar to bug 1239983, we strongly assert should a segment parser loop be running when it must have completed.
MozReview-Commit-ID: 9772PLQEozf
It served no purpose other than implementing the MSE spec by the letter. The spirit is preserved.
This allows to disable tail dispatching on the MediaSourceDemuxer's TaskQueue which prevents us from performing synchronous operation on the main thread.
MozReview-Commit-ID: G7aqfvGsf1e
The changes that follow may cause the active sourcebuffer list to be modified; which will trigger an assertion if the mediasource object is closed.
MozReview-Commit-ID: 8A1CMKAUyTq
Redoes object element measurement and reporting:
- Adds "non-heap/elements/shared", which reports a (size / refcount)
measurement. Previously these measurements went into
"non-heap/elements/mapped" and the full size would be erroneously reported
for every thread sharing the buffer.
- Renames "non-heap/elements/mapped" as "non-heap/elements/normal".
- Renames "malloc-heap/elements/non-asm.js" as "malloc-heap/elements/normal".
- Leaves "{malloc,non}-heap/elements/asm.js" unchanged.
The moz.build data is now sufficient to, with some convolution, generate
the same compilation database that recursing the tree with the showbuild
target does.
The resulting code is not the prettiest, and exposes the shortcomings of
the current moz.build data model. It is however a first step towards
fixing those shortcomings, because they are now more clearly identified.
This was validated on all platforms on try by checking the output of
mach build-backend -b CompileDB -d -n
is empty when backing out the patch after running
mach build-backend -b CompileDB
once.
There are a few difficult directories to handle, with limited usefulness
compared to having the CompileDB properly filled for everything else
in a timely manner, so skip them for now.
The behavior is not entirely idempotent (most notably for
buildconfig.html), but this can be improved later if necessary.
It is idempotent where it matters.
This allows to get rid of config/makefiles/rcs.mk and its uses.