mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-23 21:01:08 +00:00
ffb15c5a6b
On Android, we must dispatch UiCompositorController::Destroy to run on the UI thread synchronously. We were using NS_DISPATCH_SYNC to do so, but that works by starting a nested event loop that continues to execute tasks on the thread we have dispatched from. This means that we can start to execute a task which calls nsBaseWidget::CreateCompositor whilst we are midway through nsBaseWidget::DestroyCompositor. As well as generally seeming like a terrible idea, this also causes an assertion failure in some tests. To avoid this use SynchronousTask rather than NS_DISPATCH_SYNC, as it actually blocks synchronously. Additionally, do the same thing for APZInputBridgeChild::Destroy, as it is called from the same location and poses the same risk. Ideally we wouldn't have to call UiCompositorControllerChild::Destroy synchronously at all, but it was added in bug 1392705 to fix severe crashes. It might be a good idea to re-evaluate whether it is still required at some point in the future. Differential Revision: https://phabricator.services.mozilla.com/D140084 |
||
---|---|---|
.. | ||
2d | ||
angle | ||
cairo | ||
config | ||
docs | ||
gl | ||
graphite2 | ||
harfbuzz | ||
ipc | ||
layers | ||
ots | ||
qcms | ||
skia | ||
src | ||
tests | ||
thebes | ||
vr | ||
webrender_bindings | ||
wgpu_bindings | ||
wr | ||
ycbcr | ||
metrics.yaml | ||
moz.build |