Age | Commit message (Collapse) | Author | |
---|---|---|---|
2019-02-16 | Kernel: Add a simple shared memory API for two processes only. | Andreas Kling | |
And use this to implement shared bitmaps between WindowServer and clients. | |||
2019-02-16 | Kernel: Rename create_framebuffer_wrapper() to create_for_physical_range(). | Andreas Kling | |
Maybe there will be other types of physical ranges to map in the future. This API doesn't seem at all specific to framebuffers. Also tidy up a bit in BochsVGADevice. | |||
2019-02-16 | Kernel: Remove knowledge about BochsVGADevice from Process. | Andreas Kling | |
2019-02-16 | Kernel: Add ioctls to BochsVGADevice for mode setting and page flipping. | Andreas Kling | |
Use these in WindowServer instead of poking at the BochsVGADevice directly. | |||
2019-02-16 | Kernel: Make BochsVGADevice a BlockDevice and support mmapping it. | Andreas Kling | |
Currently you can only mmap the entire framebuffer. Using this when starting up the WindowServer gets us yet another step closer towards it moving into userspace. :^) | |||
2019-02-16 | Kernel: Add empty BlockDevice class. | Andreas Kling | |
2019-02-16 | Kernel: Add Device base class for CharacterDevice. | Andreas Kling | |
..to prepare for adding a BlockDevice class. | |||
2019-02-15 | Kernel: Sending a signal to another process needs to disable interrupts. | Andreas Kling | |
2019-02-15 | Ext2FS: Fix various bugs in inode and block allocation. | Andreas Kling | |
I had the wrong idea about how group indices work, so using a larger fs with more than one group caused all kinds of mess. | |||
2019-02-15 | Enable -Wimplicit-fallthrough. | Andreas Kling | |
2019-02-15 | Use modern C++ attributes instead of __attribute__ voodoo. | Andreas Kling | |
This is quite nice, although I wish [[gnu::always_inline]] implied inline. Also "gnu::" is kind of a wart, but whatcha gonna do. | |||
2019-02-15 | WindowServer: Slurp all available client messages when checking them. | Andreas Kling | |
We were reading one client message per client per event loop iteration. That was not very snappy. Make the sockets non-blocking and read() until there are no messages left. It would be even better to make as few calls to read() as possible to reduce context switching, but this is already a huge improvement. | |||
2019-02-15 | Move WindowServer API types header into WindowServer/. | Andreas Kling | |
2019-02-15 | VFS: Add two assertions to resolve_path() to catch corrupted file systems. | Andreas Kling | |
2019-02-15 | Kernel: Remove GUIEventDevice. | Andreas Kling | |
It's no longer used since all communication now happens across sockets. :^) | |||
2019-02-14 | Kernel: Fix some broken debug log statements. | Andreas Kling | |
2019-02-14 | Port the WindowServer and LibGUI to communicate through local sockets. | Andreas Kling | |
This is really cool! :^) Apps currently refuse to start if the WindowServer isn't listening on the socket in /wsportal. This makes sense, but I guess it would also be nice to have some sort of "wait for server on startup" mode. This has performance issues, and I'll work on those, but this stuff seems to actually work and I'm very happy with that. | |||
2019-02-14 | Kernel: Let's say that listening+bound sockets "can read." | Andreas Kling | |
This will make it easy-peasy to select() on a socket file descriptor to wait for incoming connections together with other activities. | |||
2019-02-14 | Kernel: Actually send things between the socket endpoints. | Andreas Kling | |
2019-02-14 | Kernel: More work on sockets. Fleshing out connect(). | Andreas Kling | |
2019-02-14 | Kernel: More work on sockets. Getting there.. | Andreas Kling | |
2019-02-14 | LibC: Add socket(), bind(), listen(), accept() and connect(). | Andreas Kling | |
2019-02-14 | Kernel: More sockets work. Fleshing out accept(). | Andreas Kling | |
2019-02-14 | Kernel: Begin fleshing out bind() syscall. | Andreas Kling | |
2019-02-14 | Kernel: Begin implementing UNIX domain sockets. | Andreas Kling | |
2019-02-14 | Kernel: Remove ProcessGUI.cpp, merging remainders into Process.cpp. | Andreas Kling | |
2019-02-14 | WindowServer: Post error messages to clients on protocol failure. | Andreas Kling | |
2019-02-14 | WindowServer: Add WSClientConnection class to manage an individual client. | Andreas Kling | |
This makes both object lifetimes and object ID's a lot easier to understand. | |||
2019-02-14 | WindowServer: Convert entire API to be message-based. | Andreas Kling | |
One big step towards userspace WindowServer. :^) | |||
2019-02-13 | WindowServer: Convert the remaining menu APIs into messages. | Andreas Kling | |
2019-02-13 | WindowServer: Refactor more of the menu APIs to be message-based. | Andreas Kling | |
This is all pretty verbose but I can whittle it down later. :^) | |||
2019-02-13 | Rename GUI_Event to GUI_ServerMessage. | Andreas Kling | |
Now that communication is becoming bidirectional, "event" is no longer right. | |||
2019-02-13 | WindowServer: Begin refactoring towards a fully asynchronous protocol. | Andreas Kling | |
In order to move the WindowServer to userspace, I have to eliminate its dependence on system call facilities. The communication channel with each client needs to be message-based in both directions. | |||
2019-02-13 | WindowServer: Put a clock in the top right corner of the screen. | Andreas Kling | |
This way we don't even need the Clock app anymore. Very cool :^) | |||
2019-02-12 | Let's have makeall.sh build with make -j2. | Andreas Kling | |
The full rebuild keeps getting slower, this makes it a bit more bearable. | |||
2019-02-12 | Add a little About app and hook it up to the system menu's "About..." entry. | Andreas Kling | |
Added icons and customizable text alignment to GLabel. | |||
2019-02-12 | Fix some compilation warnings. | Andreas Kling | |
2019-02-12 | Bootloader: Bump sector count once again. | Andreas Kling | |
This is starting to get cramped. I wonder how much longer this hilarious frankenloader will be able to boot us. | |||
2019-02-12 | Kernel: Make sure processes always start out with fds 0, 1 and 2 open. | Andreas Kling | |
If we don't have a TTY for the process, fall back to /dev/null. | |||
2019-02-12 | WindowServer: Clean up any menu objects on process exit. | Andreas Kling | |
..and now that this works, implement the Quit menu action in Terminal. :^) | |||
2019-02-12 | Kernel: Don't bother trying to pass environment to init's testing processes. | Andreas Kling | |
2019-02-12 | Plumb menu item activation events from WindowServer to clients. | Andreas Kling | |
GMenu now has an "on_item_activation" callback that fires whenever one of its items are activated. The menu item identifier is used to distinguish between items. Use this to implement font switching in Terminal. :^) | |||
2019-02-12 | WindowServer: Add locking and fix coalesced invalidation race. | Andreas Kling | |
WSWindowManager::invalidate() had a bug where it would mark the entire screen rect as dirty, but it wouldn't scheduled a deferred recompose. This would cause any subsequent calls to invalidate(Rect) to be coalesced with the pending compose, but the pending compose never happened. | |||
2019-02-12 | PS2MouseDevice: Add current buffer size to debug logging. | Andreas Kling | |
2019-02-12 | Add API's and plumbing for WindowServer clients to make menus. | Andreas Kling | |
2019-02-11 | Kernel: Update block cache on write. | Andreas Kling | |
If a block is present in the cache, just overwrite the cached block. | |||
2019-02-11 | WindowServer: Remove "unsafe" flag in WSMessageLoop::post_event(). | Andreas Kling | |
This hack is no longer needed now that we have a Finalizer process that can take locks without having to worry about the interrupt flag. | |||
2019-02-11 | Ext2FS: Fix broken logic for accessing inode and block bitmaps. | Andreas Kling | |
This logic only worked for the very first block group. | |||
2019-02-11 | IDEDiskDevice: Detect disk errors and report failure to clients. | Andreas Kling | |
Previously we'd just fail silently if there was an I/O error of any kind. | |||
2019-02-11 | WindowServer: Start implementing a menu system. | Andreas Kling | |
I'm going with a global top-of-the-screen menu instead of per-window menus. The basic idea is that menus will live in the WindowServer and clients can create menus via WindowServer requests. |