summaryrefslogtreecommitdiff
path: root/userland
diff options
context:
space:
mode:
authorAnton Kling <anton@kling.gg>2023-10-24 01:24:05 +0200
committerAnton Kling <anton@kling.gg>2023-10-24 01:27:04 +0200
commite91a4f1e31ee100b2a13cefedb182e9d69ef04ad (patch)
tree3a6f4d6995a6f1c5cd142c7c77f736a7d58636a7 /userland
parent0f208f4f03d0df85aacafa35deba11f19e96b5dd (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.c10
-rw-r--r--userland/windowserver/draw.h2
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);