LibWeb: Don't run HTMLImageElement timer when there is no animation

Before this change, we would wake up on every event loop iteration to
drive animations in single-frame images. This was a complete waste of
time and caused 100% CPU usage on our main GitHub repo page.

With this change, CPU usage is ~1% when idle on the same page. :^)
This commit is contained in:
Andreas Kling 2024-03-16 14:47:57 +01:00
parent 7121539576
commit ead742886b
Notes: sideshowbarker 2024-07-17 01:21:02 +09:00

View File

@ -838,7 +838,13 @@ void HTMLImageElement::handle_failed_fetch()
void HTMLImageElement::restart_the_animation()
{
m_current_frame_index = 0;
m_animation_timer->start();
auto image_data = m_current_request->image_data();
if (image_data && image_data->frame_count() > 1) {
m_animation_timer->start();
} else {
m_animation_timer->stop();
}
}
// https://html.spec.whatwg.org/multipage/images.html#update-the-source-set