diff --git a/Libraries/LibWeb/HTML/RenderingThread.cpp b/Libraries/LibWeb/HTML/RenderingThread.cpp
index 17cec97546d..80097e7c7aa 100644
--- a/Libraries/LibWeb/HTML/RenderingThread.cpp
+++ b/Libraries/LibWeb/HTML/RenderingThread.cpp
@@ -56,7 +56,7 @@ void RenderingThread::rendering_thread_loop()
}
}
-void RenderingThread::enqueue_rendering_task(RefPtr display_list, NonnullRefPtr painting_surface, Function&& callback)
+void RenderingThread::enqueue_rendering_task(NonnullRefPtr display_list, NonnullRefPtr painting_surface, Function&& callback)
{
Threading::MutexLocker const locker { m_rendering_task_mutex };
m_rendering_tasks.enqueue(Task { move(display_list), move(painting_surface), move(callback) });
diff --git a/Libraries/LibWeb/HTML/RenderingThread.h b/Libraries/LibWeb/HTML/RenderingThread.h
index e7f385d6da4..fe4c2a36222 100644
--- a/Libraries/LibWeb/HTML/RenderingThread.h
+++ b/Libraries/LibWeb/HTML/RenderingThread.h
@@ -25,7 +25,7 @@ public:
void start();
void set_skia_player(OwnPtr&& player) { m_skia_player = move(player); }
- void enqueue_rendering_task(RefPtr, NonnullRefPtr, Function&& callback);
+ void enqueue_rendering_task(NonnullRefPtr, NonnullRefPtr, Function&& callback);
private:
void rendering_thread_loop();
@@ -38,7 +38,7 @@ private:
Atomic m_exit { false };
struct Task {
- RefPtr display_list;
+ NonnullRefPtr display_list;
NonnullRefPtr painting_surface;
Function callback;
};
diff --git a/Libraries/LibWeb/HTML/TraversableNavigable.cpp b/Libraries/LibWeb/HTML/TraversableNavigable.cpp
index 493cda3b8cd..a8519eab177 100644
--- a/Libraries/LibWeb/HTML/TraversableNavigable.cpp
+++ b/Libraries/LibWeb/HTML/TraversableNavigable.cpp
@@ -1454,7 +1454,7 @@ RefPtr TraversableNavigable::record_display_list(DevicePi
return document->record_display_list(paint_config);
}
-void TraversableNavigable::start_display_list_rendering(RefPtr display_list, NonnullRefPtr painting_surface, Function&& callback)
+void TraversableNavigable::start_display_list_rendering(NonnullRefPtr display_list, NonnullRefPtr painting_surface, Function&& callback)
{
m_rendering_thread.enqueue_rendering_task(move(display_list), move(painting_surface), move(callback));
}
diff --git a/Libraries/LibWeb/HTML/TraversableNavigable.h b/Libraries/LibWeb/HTML/TraversableNavigable.h
index 88557b26f44..1bd18b8b092 100644
--- a/Libraries/LibWeb/HTML/TraversableNavigable.h
+++ b/Libraries/LibWeb/HTML/TraversableNavigable.h
@@ -98,7 +98,7 @@ public:
[[nodiscard]] GC::Ptr currently_focused_area();
RefPtr record_display_list(DevicePixelRect const&, PaintOptions);
- void start_display_list_rendering(RefPtr display_list, NonnullRefPtr painting_surface, Function&& callback);
+ void start_display_list_rendering(NonnullRefPtr display_list, NonnullRefPtr painting_surface, Function&& callback);
enum class CheckIfUnloadingIsCanceledResult {
CanceledByBeforeUnload,
diff --git a/Services/WebContent/PageClient.cpp b/Services/WebContent/PageClient.cpp
index ff99b62d789..698521fced3 100644
--- a/Services/WebContent/PageClient.cpp
+++ b/Services/WebContent/PageClient.cpp
@@ -242,8 +242,12 @@ void PageClient::start_display_list_rendering(Web::DevicePixelRect const& conten
paint_options.has_focus = m_has_focus;
auto& traversable = *page().top_level_traversable();
auto display_list = traversable.record_display_list(content_rect, paint_options);
+ if (!display_list) {
+ callback();
+ return;
+ }
auto painting_surface = traversable.painting_surface_for_backing_store(target);
- traversable.start_display_list_rendering(display_list, painting_surface, move(callback));
+ traversable.start_display_list_rendering(*display_list, painting_surface, move(callback));
}
Queue& PageClient::input_event_queue()