summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Kling <anton@kling.gg>2023-10-23 14:36:59 +0200
committerAnton Kling <anton@kling.gg>2023-10-23 14:36:59 +0200
commit54886a05223459e13bcb57e0c8a870caf9f70a17 (patch)
tree36f0fcbd4e84ff082aaaffaf476f4b5b2d882228
parentb8ca0766a2006e4a11451cf447ac02372c996c12 (diff)
WindowServer: Optimize copying of buffers.
This optimization should probably move over to memcpy later.
-rw-r--r--userland/windowserver/draw.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/userland/windowserver/draw.c b/userland/windowserver/draw.c
index 1794378..e982d21 100644
--- a/userland/windowserver/draw.c
+++ b/userland/windowserver/draw.c
@@ -16,13 +16,23 @@ void update_display(DISPLAY *disp) {
place_pixel(0xFFFFFFFF, mx, my + i / 2);
place_pixel(0xFFFFFFFF, mx + i / 2, my);
}
- for (int i = 0; i < disp->size; i++)
- disp->true_buffer[i] = disp->back_buffer[i];
- // memcpy(disp->true_buffer, disp->back_buffer, disp->size);
+ uint32_t *dst = disp->true_buffer;
+ uint32_t *src = disp->back_buffer;
+ for (int i = 0; i < disp->size / BPP; i++) {
+ *dst = *src;
+ dst++;
+ src++;
+ }
}
void draw_wallpaper(DISPLAY *disp) {
-memcpy(disp->back_buffer, disp->wallpaper_buffer, disp->size);
+ uint32_t *dst = disp->back_buffer;
+ uint32_t *src = disp->wallpaper_buffer;
+ for (int i = 0; i < disp->size / BPP; i++) {
+ *dst = *src;
+ dst++;
+ src++;
+ }
}
void draw_mouse(DISPLAY *disp, int mouse_x, int mouse_y) {