mirror of
https://github.com/fergalmoran/ladybird.git
synced 2025-12-28 12:18:25 +00:00
LibWeb: Fix endless spinning in apply_the_history_step()
While waiting for a task that populates a session history entry, we can't limit the processing of the event loop to the `NavigationAndTraversal` task source. This is because fetching uses the `Networking` task source, which also needs to be processed. Since making a fetch request might take some time, we want to process everything on the event loop while waiting, to avoid blocking user interactions. It is still possible to use `spin_processing_tasks_with_source_until()` on subsequent steps of `apply_the_history_step()`. Also modifies test that was flaky.
This commit is contained in:
committed by
Andreas Kling
parent
baf589deef
commit
609a72f7c7
@@ -572,7 +572,7 @@ TraversableNavigable::HistoryStepResult TraversableNavigable::apply_the_history_
|
||||
// AD-HOC: Since currently populate_session_history_entry_document does not run in parallel
|
||||
// we call spin_until to interrupt execution of this function and let document population
|
||||
// to complete.
|
||||
main_thread_event_loop().spin_processing_tasks_with_source_until(Task::Source::NavigationAndTraversal, [&] {
|
||||
main_thread_event_loop().spin_until([&] {
|
||||
return !changing_navigable_continuations.is_empty() || completed_change_jobs == total_change_jobs;
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user