gecko-dev/gfx
Andrew Osmond 9f767ee84a Bug 1779519 - gfxFontCache expiration tracker operations should be more atomic. r=jfkthame
gfxFontCache acquires and releases its mutex during various operations.
In order to keep the state internally consistent, we should only release
the lock after the full operation is complete. This involves moving the
deletion of gfxFont to outside the lock via a temporary discard array.

The expiration state should not be protected by the gfxFont's mutex
since we don't hold it during most operations. Instead we should hold
gfxFontCache's mutex because then we can guarantee the operation is
atomic, particularly when a worker wants a font, and the main thread is
aging the generations.

When a font is returned from gfxFontCache, we now return it already
removed from the tracker, and with its refcount updated. This avoids any
potential races between the expiration timer and a worker accessing the
font, as well as simplying the callers so they don't need to be aware of
addref-ing manually in case the result is to be discarded (so that it
gets readded to the tracker).

Differential Revision: https://phabricator.services.mozilla.com/D151821
2022-07-14 18:35:49 +00:00
..
2d Backed out 4 changesets (bug 1771374) for causing Google docs and maps rendering regressions. a=backout 2022-07-14 00:43:56 +03:00
angle
cairo Bug 1778158 - quartz: Avoid reading beyond the end of image surfaces. r=jfkthame 2022-07-06 12:25:10 +00:00
config Backed out 8 changesets (bug 1754239, bug 1766308, bug 1766307, bug 1766310) for causing build bustages on UtilityAudioDecoderParent.cpp CLOSED TREE 2022-07-14 04:03:19 +03:00
docs Bug 1771364 - Add basic testing section to APZ docs. r=botond 2022-05-27 20:44:02 +00:00
gl Backed out 4 changesets (bug 1771374) for causing Google docs and maps rendering regressions. a=backout 2022-07-14 00:43:56 +03:00
graphite2
harfbuzz Bug 1779200 - Again allow warnings in harfbuzz because of new -Wcomma warnings. r=RyanVM 2022-07-13 13:12:34 +00:00
ipc Backed out 8 changesets (bug 1754239, bug 1766308, bug 1766307, bug 1766310) for causing build bustages on UtilityAudioDecoderParent.cpp CLOSED TREE 2022-07-14 04:03:19 +03:00
layers Bug 1769290 - Part 14: Apply mozilla-js-handle-rooted-typedef against gfx r=andi 2022-07-14 17:00:20 +00:00
ots Bug 1519636 - Reformat recent changes to the Google coding style r=andi,media-playback-reviewers,necko-reviewers,padenot,dragana 2022-06-07 12:32:55 +00:00
qcms Bug 1772048 - Update rustc_version and semver crates. r=emilio,webdriver-reviewers,kinetik,whimboo 2022-06-07 10:01:32 +00:00
skia Bug 1774522 - Make Skia C++20 compatible by replacing deprecated std::result_of_t. r=lsalzman 2022-06-17 02:13:46 +00:00
src Bug 1779519 - gfxFontCache expiration tracker operations should be more atomic. r=jfkthame 2022-07-14 18:35:49 +00:00
tests Bug 1769290 - Part 14: Apply mozilla-js-handle-rooted-typedef against gfx r=andi 2022-07-14 17:00:20 +00:00
thebes Bug 1779519 - gfxFontCache expiration tracker operations should be more atomic. r=jfkthame 2022-07-14 18:35:49 +00:00
vr Bug 1771515 - [webxr] Support Oculus Quest2 controllers. r=jgilbert 2022-06-02 05:10:17 +00:00
webrender_bindings Backed out changeset 4226803862e0 (bug 1779344) for conflicting with the backout of 1771374. CLOSED TREE 2022-07-14 00:53:56 +03:00
wgpu_bindings Bug 1770219 - Disallow large buffer allocations. r=jimb 2022-07-08 11:51:55 +00:00
wr Bug 1772132 - Update Glean and remove cargo metadata replacement. r=janerik,supply-chain-reviewers 2022-07-14 13:11:13 +00:00
ycbcr Bug 1698699 - P7 - add missing include for hybrid builds. r=ng 2022-06-28 16:29:41 +00:00
metrics.yaml Bug 1778395 - Part 2: Record time between frame creation and the start of rendering. r=jrmuizel,chutten 2022-07-12 14:59:09 +00:00
moz.build