From ed1337add179c33bdf8e7d89b6c4d2e41de954fc Mon Sep 17 00:00:00 2001 From: Aliaksandr Kalenik Date: Thu, 5 Jun 2025 19:58:53 +0200 Subject: [PATCH] LibJS: Don't start rendering thread for a navigable created for SVG Traversable navigable created for rendering svg element doesn't perform any actual rendering, so there is no need to spawn a rendering thread. --- Libraries/LibWeb/HTML/RenderingThread.cpp | 4 +++- Libraries/LibWeb/HTML/TraversableNavigable.cpp | 8 +++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Libraries/LibWeb/HTML/RenderingThread.cpp b/Libraries/LibWeb/HTML/RenderingThread.cpp index f65cbd5ae3e..d118faab5df 100644 --- a/Libraries/LibWeb/HTML/RenderingThread.cpp +++ b/Libraries/LibWeb/HTML/RenderingThread.cpp @@ -28,7 +28,9 @@ RenderingThread::~RenderingThread() { // Note: Promise rejection is expected to signal the thread to exit. m_main_thread_exit_promise->reject(Error::from_errno(ECANCELED)); - (void)m_thread->join(); + if (m_thread) { + (void)m_thread->join(); + } } void RenderingThread::start(DisplayListPlayerType display_list_player_type) diff --git a/Libraries/LibWeb/HTML/TraversableNavigable.cpp b/Libraries/LibWeb/HTML/TraversableNavigable.cpp index 886858a7896..7c8ccc56741 100644 --- a/Libraries/LibWeb/HTML/TraversableNavigable.cpp +++ b/Libraries/LibWeb/HTML/TraversableNavigable.cpp @@ -61,9 +61,11 @@ TraversableNavigable::TraversableNavigable(GC::Ref page) skia_player = make(); } - m_rendering_thread.set_skia_player(move(skia_player)); - m_rendering_thread.set_skia_backend_context(m_skia_backend_context); - m_rendering_thread.start(display_list_player_type); + if (!page->client().is_svg_page_client()) { + m_rendering_thread.set_skia_player(move(skia_player)); + m_rendering_thread.set_skia_backend_context(m_skia_backend_context); + m_rendering_thread.start(display_list_player_type); + } } TraversableNavigable::~TraversableNavigable() = default;