mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-08 10:44:56 +00:00
Bug 1323678 - Support off-main-thread snapshot destruction. r=heycam
This commit is contained in:
parent
f3e4b665b7
commit
1c5b9be020
@ -78,7 +78,7 @@ load 325984-1.xhtml
|
|||||||
load 325984-2.html
|
load 325984-2.html
|
||||||
load 328944-1.xul
|
load 328944-1.xul
|
||||||
load 329900-1.html
|
load 329900-1.html
|
||||||
skip-if(stylo) load 330015-1.html # bug 1323678
|
load 330015-1.html
|
||||||
load 331204-1.html
|
load 331204-1.html
|
||||||
load 331679-1.xhtml
|
load 331679-1.xhtml
|
||||||
load 331679-2.xml
|
load 331679-2.xml
|
||||||
@ -182,7 +182,7 @@ load 393326-1.html
|
|||||||
load 393326-2.html
|
load 393326-2.html
|
||||||
load 393661-1.html
|
load 393661-1.html
|
||||||
load 393801-1.html
|
load 393801-1.html
|
||||||
skip-if(stylo) load 394014-1.html # bug 1323678
|
load 394014-1.html
|
||||||
load 394014-2.html
|
load 394014-2.html
|
||||||
load 394150-1.xhtml
|
load 394150-1.xhtml
|
||||||
load 397011-1.xhtml
|
load 397011-1.xhtml
|
||||||
|
@ -279,15 +279,23 @@ Gecko_CalcStyleDifference(nsStyleContext* aOldStyleContext,
|
|||||||
ServoElementSnapshotOwned
|
ServoElementSnapshotOwned
|
||||||
Gecko_CreateElementSnapshot(RawGeckoElementBorrowed aElement)
|
Gecko_CreateElementSnapshot(RawGeckoElementBorrowed aElement)
|
||||||
{
|
{
|
||||||
|
MOZ_ASSERT(NS_IsMainThread());
|
||||||
return new ServoElementSnapshot(aElement);
|
return new ServoElementSnapshot(aElement);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Gecko_DropElementSnapshot(ServoElementSnapshotOwned aSnapshot)
|
Gecko_DropElementSnapshot(ServoElementSnapshotOwned aSnapshot)
|
||||||
{
|
{
|
||||||
MOZ_ASSERT(NS_IsMainThread(),
|
// Proxy deletes have a lot of overhead, so Servo tries hard to only drop
|
||||||
"ServoAttrSnapshots can only be dropped on the main thread");
|
// snapshots on the main thread. However, there are certain cases where
|
||||||
delete aSnapshot;
|
// it's unavoidable (i.e. synchronously dropping the style data for the
|
||||||
|
// descendants of a new display:none root).
|
||||||
|
if (MOZ_UNLIKELY(!NS_IsMainThread())) {
|
||||||
|
nsCOMPtr<nsIRunnable> task = NS_NewRunnableFunction([=]() { delete aSnapshot; });
|
||||||
|
NS_DispatchToMainThread(task.forget());
|
||||||
|
} else {
|
||||||
|
delete aSnapshot;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
RawServoDeclarationBlockStrongBorrowedOrNull
|
RawServoDeclarationBlockStrongBorrowedOrNull
|
||||||
|
Loading…
Reference in New Issue
Block a user