From b8ca0766a2006e4a11451cf447ac02372c996c12 Mon Sep 17 00:00:00 2001 From: Anton Kling Date: Mon, 23 Oct 2023 14:27:22 +0200 Subject: WindowServer: Make the wallpaper be stored in a shared memory region. This allow other processes to easily modify the wallpaper by opening the memory region and poking into memory. --- userland/windowserver/ws.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'userland/windowserver/ws.c') diff --git a/userland/windowserver/ws.c b/userland/windowserver/ws.c index da1bdaa..6c7e6ee 100644 --- a/userland/windowserver/ws.c +++ b/userland/windowserver/ws.c @@ -69,6 +69,17 @@ void setup_display(DISPLAY *disp, const char *path, uint64_t size) { disp->true_buffer = mmap(NULL, size, 0, 0, disp->vga_fd, 0); disp->back_buffer = malloc(size + 0x1000); disp->clients = clients; + + disp->wallpaper_fd = shm_open("wallpaper", O_RDWR, 0); + assert(disp->wallpaper_fd >= 0); + ftruncate(disp->wallpaper_fd, size); + void *rc = mmap(NULL, size, 0, 0, disp->wallpaper_fd, 0); + assert(rc); + disp->wallpaper_buffer = rc; + for (int i = 0; i < disp->size / BPP; i++) { + uint32_t *p = disp->wallpaper_buffer + i * sizeof(uint32_t); + *p = 0xFFFFFF; + } } void setup(void) { -- cgit v1.2.3