Skip to content

Commit

Permalink
LibWeb: Don't run HTMLImageElement timer when there is no animation
Browse files Browse the repository at this point in the history
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. :^)
  • Loading branch information
awesomekling committed Mar 16, 2024
1 parent 21e7e37 commit 8d4c012
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion Userland/Libraries/LibWeb/HTML/HTMLImageElement.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 8d4c012

Please sign in to comment.