From c9a70ffff5b25824fc53209168f75a352e6638f0 Mon Sep 17 00:00:00 2001 From: MacDue Date: Fri, 17 Jun 2022 00:26:54 +0100 Subject: [PATCH] LibWeb: Fix 'background-repeat: round' calculation Previously, this was slightly off and not doing what the spec comment above asked for. This led to really small values for x_step and y_step, making the `backgrounds.html' example use crazy amounts of CPU whist painting. --- Userland/Libraries/LibWeb/Painting/BackgroundPainting.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Userland/Libraries/LibWeb/Painting/BackgroundPainting.cpp b/Userland/Libraries/LibWeb/Painting/BackgroundPainting.cpp index 3554219bf9..51053dda09 100644 --- a/Userland/Libraries/LibWeb/Painting/BackgroundPainting.cpp +++ b/Userland/Libraries/LibWeb/Painting/BackgroundPainting.cpp @@ -154,10 +154,10 @@ void paint_background(PaintContext& context, Layout::NodeWithStyleAndBoxModelMet // where round() is a function that returns the nearest natural number // (integer greater than zero). if (layer.repeat_x == CSS::Repeat::Round) { - image_rect.set_width(background_positioning_area.width() / background_positioning_area.width() / image_rect.width()); + image_rect.set_width(background_positioning_area.width() / roundf(background_positioning_area.width() / image_rect.width())); } if (layer.repeat_y == CSS::Repeat::Round) { - image_rect.set_height(background_positioning_area.height() / background_positioning_area.height() / image_rect.height()); + image_rect.set_height(background_positioning_area.height() / roundf(background_positioning_area.height() / image_rect.height())); } // If background-repeat is round for one dimension only and if background-size is auto