diff options
author | Anton Kling <anton@kling.gg> | 2023-10-24 01:24:05 +0200 |
---|---|---|
committer | Anton Kling <anton@kling.gg> | 2023-10-24 01:27:04 +0200 |
commit | e91a4f1e31ee100b2a13cefedb182e9d69ef04ad (patch) | |
tree | 3a6f4d6995a6f1c5cd142c7c77f736a7d58636a7 /userland | |
parent | 0f208f4f03d0df85aacafa35deba11f19e96b5dd (diff) |
WindowServer: Optimize 'for' loop such that it avoids doing a division during each iteration
Diffstat (limited to 'userland')
-rw-r--r-- | userland/windowserver/draw.c | 10 | ||||
-rw-r--r-- | userland/windowserver/draw.h | 2 |
2 files changed, 7 insertions, 5 deletions
diff --git a/userland/windowserver/draw.c b/userland/windowserver/draw.c index 31e4301..2272506 100644 --- a/userland/windowserver/draw.c +++ b/userland/windowserver/draw.c @@ -13,7 +13,7 @@ int mx; int my; -void update_display(DISPLAY *disp) { +void update_display(const DISPLAY *disp) { for (int i = 0; i < 20; i++) { place_pixel(0xFFFFFFFF, mx + i, my + i); place_pixel(0xFFFFFFFF, mx, my + i / 2); @@ -21,17 +21,19 @@ void update_display(DISPLAY *disp) { } uint32_t *dst = disp->true_buffer; uint32_t *src = disp->back_buffer; - for (int i = 0; i < disp->size / disp->bpp; i++) { + const uint32_t n = disp->size / disp->bpp; + for (int i = 0; i < n; i++) { *dst = *src; dst++; src++; } } -void draw_wallpaper(DISPLAY *disp) { +void draw_wallpaper(const DISPLAY *disp) { uint32_t *dst = disp->back_buffer; uint32_t *src = disp->wallpaper_buffer; - for (int i = 0; i < disp->size / disp->bpp; i++) { + const uint32_t n = disp->size / disp->bpp; + for (int i = 0; i < n; i++) { *dst = *src; dst++; src++; diff --git a/userland/windowserver/draw.h b/userland/windowserver/draw.h index f7ade64..db5f6ee 100644 --- a/userland/windowserver/draw.h +++ b/userland/windowserver/draw.h @@ -2,7 +2,7 @@ #define DRAW_H #include "ws.h" -void draw_wallpaper(DISPLAY *disp); +void draw_wallpaper(const DISPLAY *disp); void draw_window(DISPLAY *disp, const WINDOW *w); void update_full_display(DISPLAY *disp, int mouse_x, int mouse_y); void update_active_window(DISPLAY *disp); |