Commit Graph

2349 Commits

Author SHA1 Message Date
Bananymous 73349e5e75 WindowServer: don't set window location to (0,0) when fullscreening 2024-11-15 20:43:41 +02:00
Bananymous 74ae411b69 WindowServer: Skip invalidation on other windows in fullscreen mode 2024-11-15 20:42:07 +02:00
Bananymous d458592fb1 WindowServer: Don't focus unfocusable windows on window creation 2024-11-15 20:41:42 +02:00
Bananymous 627c89a62d LibGUI: Actually set window attributes when creating a window 2024-11-14 23:33:12 +02:00
Bananymous 0228cd4f31 Kernel: Increase userspace stack size and decrease kernel stack
Quake II needs a lot of stack, it was overflowing my 256 KiB stack so
this patch doubles that, so Quake II can run!

Also every thread had 256 KiB kernel stack. This is unnecessarily large
and now dropped to 32 KiB.
2024-11-14 21:03:04 +02:00
Bananymous a859558840 LibGUI: Window Creation takes attributes as an argument
This reduces windows showing/moving once they are opened and setting
their attributes.
2024-11-14 20:57:34 +02:00
Bananymous 04eee2ea75 ports: Add quake2 port (+two years of banan-os!)
This patch adds software rendered quake2 port. I was supposted to push
this as two days ago as two years of banan-os, but I was too sick to do
any programming.
2024-11-14 12:47:30 +02:00
Bananymous bda2c663da WindowServer: Implement fullscreen windows
If window size does not match framebuffer size, window data will be
scaled to framebuffer using nearest sampling for best performance.
2024-11-13 19:10:15 +02:00
Bananymous 5e041e6e5a WindowServer: Make all terminating signals exit cleanly
This allows window server to restore input handling to TTY if window
server crashes on page fault or some other unexpected exception.
2024-11-13 17:32:13 +02:00
Bananymous d19264eea8 WindowServer: Implement partial window resizing
This patch adds support for client side resizing, so clients can request
the server to resize their windows. WindowServer will respond with
resize event when and if the resizing is complete.
2024-11-13 17:30:12 +02:00
Bananymous 64c52012df Kernel: Fix MemoryRegion overlap comparison
This made some calls to `munmap` unmap extra regions.
2024-11-13 17:26:42 +02:00
Bananymous 7542e55cb2 LibC: Add option to debug userspace malloc family calls 2024-11-10 14:03:25 +02:00
Bananymous 6bd51ac345 LibGUI: Client window now exits if it loses connection from server
This can be prevented by installing callback for socket errors.
2024-11-10 14:02:23 +02:00
Bananymous cf21eb4b39 TaskBar: Cleanup TaskBar string generation 2024-11-08 02:57:35 +02:00
Bananymous da8170c5b6 LibGUI: Add support for focusable windows and mouse capturing
These are essential parts of a window server! This allows making TaskBar
non-focusable.
2024-11-08 02:55:10 +02:00
Bananymous 12bc7480e0 LibC: Implement _Exit
This just calls _exit as POSIX says they can be equivalent
2024-11-08 02:52:12 +02:00
Bananymous 92862fdf39 LibC: Implement nan{,f,l} as functions
One port was using function pointers to these functions so macros don't
work.
2024-11-08 02:49:21 +02:00
Bananymous 4417268ecc BAN: only include <new> in PlacementNew.h
I was getting annoying multiple definitions for placement new and my
build system requires that c++ libraries are compiled. I guess this is
the easiest and cleanest solution
2024-11-08 02:48:07 +02:00
Bananymous 346853ee55 BAN: Implement sincos to math
This function calculates both sin and cos fast (hopefully)
2024-11-04 17:42:01 +02:00
Bananymous a82f00cb70 BAN: Fix HashMap::{insert,emplace}_or_assign to actually assing value
I seemed to completely forgotten to do the assignment itself :D
2024-11-04 15:42:04 +02:00
Bananymous 1838ea5c30 Kernel: Fix pseudo terminal leaks 2024-11-04 15:35:07 +02:00
Bananymous a356d90445 LibC: Fix libc compilation for 32 bit target 2024-11-04 10:51:31 +02:00
Bananymous a3f41fd4d9 Kernel: Cleanup disk cache
Add missing include and cleanup code calling automatic disk sync.
2024-11-03 20:28:15 +02:00
Bananymous f4be37700f Kernel/userspace: rework floating point math
SSE is now unconditionally enabled any where and most of math.h is now
actually implemented. using __builtin_<func> lead to many hangs where
the builtin function would just call itself.
2024-11-03 20:28:15 +02:00
Bananymous ed19bb11fe Kernel: Cleanup thread default sse initialization 2024-11-03 20:22:28 +02:00
Bananymous 07275ecb5f BAN: Implement floating point constants in Numbers.h 2024-11-03 20:19:45 +02:00
Bananymous 2464fccadd LibC: Fix *scanf consuming extra characters 2024-10-19 12:43:23 +03:00
Bananymous 5fde2cf91a TaskBar: Ignore window close events and exit on connection close
This prevents user from killing the task bar with keyboard shortcuts
2024-10-18 17:19:05 +03:00
Bananymous d57e797147 WindowServer: Don't kill window on key event, instead send close event
This allows notifying the client about window close and let client
handle it as it wants
2024-10-18 17:17:58 +03:00
Bananymous 988f7b0561 ports: Fix doom port to use the new GUI events 2024-10-18 03:45:15 +03:00
Bananymous e99a271465 Userspace: Implement basic task bar
This bar only shows current time but its something to work on later!
2024-10-18 03:36:03 +03:00
Bananymous d266c7f93b LibGUI: Implement attributes for windows
Windows can now change whether they have title bar, rounded corners,
alpha channel and whether they are movable. Also windows can also change
their own position
2024-10-18 03:32:12 +03:00
Bananymous d7e5c56e94 userspace: Use SOCK_STREAM instead of SOCK_SEQPACKET for WindowServer
This makes more sense if we have longer packages
2024-10-17 01:44:48 +03:00
Bananymous ddd3b4c093 BAN: Implement is_pod type traits 2024-10-17 01:35:42 +03:00
Bananymous 3a6fc4c197 BAN: Add proper error messages for `MUST()` in userspace 2024-10-17 01:32:55 +03:00
Bananymous 91381546d5 Shell: Don't crash if history file does not exist :D 2024-10-16 00:41:28 +03:00
Bananymous 41e2b898ab Shell: Implement history file for persistent history storage 2024-10-16 00:21:58 +03:00
Bananymous 6e981d1222 Shell: Add support for inline environment variables
e.g. `foo=$(echo lol) Shell -c 'echo $foo'` will now print lol!
2024-10-15 23:45:08 +03:00
Bananymous 8317bb13ca Shell: Cleanup code by defining argument types as nested types 2024-10-15 23:44:06 +03:00
Bananymous c40f244dff Shell: remove `env` builtin and add `type`
other shells don't seem to implement as a builtin, so i won't either
2024-10-15 23:42:01 +03:00
Bananymous a6aa048be0 userspace: Implement `env` as an executable 2024-10-15 23:42:01 +03:00
Bananymous 8fd0162393 Kernel: Rewrite x86_64 page tables to use HHDM instead of kmalloc
This allows page tables to not crash the kernel once kmalloc runs out of
its (limited) static memory.
2024-10-14 11:40:30 +03:00
Bananymous f0b18da881 Kernel: Add kmalloc helper APIs 2024-10-14 11:39:04 +03:00
Bananymous 5f63ea8f8a Kernel: Add CPUID check for 1 GiB page support 2024-10-14 11:38:03 +03:00
Bananymous 2b43569927 Kernel: Use enums in boot info instead of magic values 2024-10-14 11:36:51 +03:00
Bananymous 4ba33175cf Kernel: Don't leak memory when preparing fast page
For some reason I was allocating memory for page table entry...
2024-10-14 11:34:48 +03:00
Bananymous 3edc1af560 Kernel: Don't map main bios area in page table initialization
This is only needed for RSDP lookup so it can be done with fast pages
2024-10-14 11:32:54 +03:00
Bananymous 55fbd09e45 Kernel: Rewrite physical memory allocation with PageTable::fast_pages 2024-10-14 11:32:54 +03:00
Bananymous 6a46a25f48 image: Add benchmark flag to measure performance of image operations 2024-10-13 22:05:13 +03:00
Bananymous 88b8ca5b29 LibC: Fix some string functions
I was not casting some required values to char or handling length of
zero
2024-10-13 22:04:08 +03:00