diff --git a/.DS_Store b/.DS_Store
index c7cb1d9..3a7a409 100644
Binary files a/.DS_Store and b/.DS_Store differ
diff --git a/README.md b/README.md
index 9b28355..9a7b764 100644
--- a/README.md
+++ b/README.md
@@ -1,15 +1,14 @@
# BoredOS
-BoredOS has now exited Beta stage and is "stable enough" to be put out as a "stable" product.
-
+
====================== __ ____ ____
===================== / /_ / __ \/ ___\
==================== / __ \/ / / /\___ \
=================== / /_/ / /_/ /____/ /
================== /_.___/\____//_____/
=================
-
+
BoredOS is a simple x86_64 hobbyist operating system.
It features a DE (and WM), a FAT32 filesystem, customizable UI and much much more!
diff --git a/boredos.iso b/boredos.iso
index 090b150..5df0757 100644
Binary files a/boredos.iso and b/boredos.iso differ
diff --git a/src/.DS_Store b/src/.DS_Store
index 395d9bf..8d474c1 100644
Binary files a/src/.DS_Store and b/src/.DS_Store differ
diff --git a/src/kernel/.DS_Store b/src/kernel/.DS_Store
index c93e495..f37b063 100644
Binary files a/src/kernel/.DS_Store and b/src/kernel/.DS_Store differ
diff --git a/src/kernel/images/.DS_Store b/src/kernel/images/.DS_Store
index 3eca0ac..6cc4bb6 100644
Binary files a/src/kernel/images/.DS_Store and b/src/kernel/images/.DS_Store differ
diff --git a/src/kernel/images/wallpapers/.DS_Store b/src/kernel/images/wallpapers/.DS_Store
index 5de30c9..82864b4 100644
Binary files a/src/kernel/images/wallpapers/.DS_Store and b/src/kernel/images/wallpapers/.DS_Store differ
diff --git a/src/kernel/images/wallpapers/lake.jpg b/src/kernel/images/wallpapers/lake.jpg
new file mode 100644
index 0000000..502b423
Binary files /dev/null and b/src/kernel/images/wallpapers/lake.jpg differ
diff --git a/src/kernel/userland/settings.c b/src/kernel/userland/settings.c
index 0da877d..de322c9 100644
--- a/src/kernel/userland/settings.c
+++ b/src/kernel/userland/settings.c
@@ -3,6 +3,7 @@
// This header needs to maintain in any file it is present in, as per the GPL license terms.
#include "libc/syscall.h"
#include "libc/libui.h"
+#include "libc/stdlib.h"
#include "nanojpeg.h"
#include
#include
@@ -145,8 +146,8 @@ static void load_wallpapers(void) {
if (fd >= 0) {
int size = sys_seek(fd, 0, 2); // SEEK_END
sys_seek(fd, 0, 0); // SEEK_SET
- if (size > 0 && size < 1024 * 1024) {
- unsigned char *buf = (unsigned char *)sys_sbrk(size);
+ if (size > 0 && size < 8 * 1024 * 1024) {
+ unsigned char *buf = (unsigned char *)malloc(size);
if (buf) {
sys_read(fd, buf, size);
njInit();
@@ -155,7 +156,7 @@ static void load_wallpapers(void) {
wp->valid = 1;
}
njDone();
- sys_sbrk(-size); // Release memory
+ free(buf); // Release memory
}
}
sys_close(fd);
diff --git a/src/kernel/wm.c b/src/kernel/wm.c
index e29ca9c..a287806 100644
--- a/src/kernel/wm.c
+++ b/src/kernel/wm.c
@@ -574,7 +574,7 @@ static uint32_t* thumb_cache_decode(const char *path) {
if (!fh) return NULL;
uint32_t file_size = fh->size;
- if (file_size == 0 || file_size > 2 * 1024 * 1024) {
+ if (file_size == 0 || file_size > 8 * 1024 * 1024) {
fat32_close(fh);
return NULL;
}
@@ -1161,7 +1161,9 @@ void wm_paint(void) {
if (str_ends_with(icon->name, ".elf")) draw_elf_icon(icon->x, icon->y, icon->name);
else if (str_ends_with(icon->name, ".pnt")) draw_paint_icon(icon->x, icon->y, icon->name);
else if (str_ends_with(icon->name, ".jpg") || str_ends_with(icon->name, ".JPG")) {
- draw_image_icon(icon->x, icon->y, icon->name);
+ char full_path[128] = "/Desktop/";
+ int p=9; int n=0; while(icon->name[n] && p < 127) full_path[p++] = icon->name[n++]; full_path[p]=0;
+ draw_image_icon(icon->x, icon->y, full_path);
draw_icon_label(icon->x, icon->y, icon->name);
}
else draw_document_icon(icon->x, icon->y, icon->name);
@@ -2366,16 +2368,13 @@ void wm_process_deferred_thumbs(void) {
i++;
}
path[i] = 0;
-
- serial_write("[WM] Processing deferred thumb: ");
- serial_write(path);
- serial_write("\n");
-
+
// Pop from queue
thumb_queue_head = (thumb_queue_head + 1) % THUMB_QUEUE_SIZE;
// Process (this takes time but it's okay because we are in the main loop with IRQs enabled)
thumb_cache_decode(path);
+ force_redraw = true;
}
void wm_init(void) {