mirror of
https://github.com/servo/servo.git
synced 2025-07-24 15:50:21 +01:00
check for a document being "fully-active" before reflows
This commit is contained in:
parent
eb82e781a3
commit
7530faa4ea
3 changed files with 9 additions and 2 deletions
|
@ -1741,7 +1741,11 @@ impl Document {
|
|||
self.process_deferred_scripts();
|
||||
},
|
||||
LoadType::PageSource(_) => {
|
||||
if self.has_browsing_context {
|
||||
if self.has_browsing_context && self.is_fully_active() {
|
||||
// Note: if the document is not fully active, the layout thread will have exited already.
|
||||
// The underlying problem might actually be that layout exits while it should be kept alive.
|
||||
// See https://github.com/servo/servo/issues/22507
|
||||
|
||||
// Disarm the reflow timer and trigger the initial reflow.
|
||||
self.reflow_timeout.set(None);
|
||||
self.upcast::<Node>().dirty(NodeDamage::OtherNodeDamage);
|
||||
|
|
|
@ -1314,6 +1314,10 @@ impl ScriptThread {
|
|||
// into this loop too, but for now it's only images.
|
||||
debug!("Issuing batched reflows.");
|
||||
for (_, document) in self.documents.borrow().iter() {
|
||||
// Step 13
|
||||
if !document.is_fully_active() {
|
||||
continue;
|
||||
}
|
||||
let window = document.window();
|
||||
let pending_reflows = window.get_pending_reflow_count();
|
||||
if pending_reflows > 0 {
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
[active.window.html]
|
||||
expected: CRASH
|
||||
[document.open() removes the document's children (non-active document without an associated Window object; createHTMLDocument)]
|
||||
expected: FAIL
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue