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: 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-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 | WindowServer: Rename GUI_Foo to WSAPI_Foo. | Andreas Kling | |
2019-02-15 | Move WindowServer API types header into WindowServer/. | 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 | 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 | WindowServer: Ignore attempts to make menu windows the active window. | Andreas Kling | |
2019-02-14 | WindowServer: Add debug logging if we try to activate a client-less window. | Andreas Kling | |
2019-02-14 | WindowServer: Make MenuBar unaware of Process. | Andreas Kling | |
2019-02-14 | WindowServer: Make WSMenu use WSClientConnection::post_message(). | Andreas Kling | |
2019-02-14 | WindowServer: Get rid of the WSWindow lock now that accesses are serial. | Andreas Kling | |
2019-02-14 | WindowServer: Post error if trying to destroy non-existent menubar. | Andreas Kling | |
2019-02-14 | WindowServer: Add WSClientConnection::create_bitmap(). | Andreas Kling | |
There we go. Now WSWindow doesn't know about Process at all. | |||
2019-02-14 | WindowServer: Add WSClientConnection::post_message(). | Andreas Kling | |
This way WSWindow doesn't have to grab at the Process. | |||
2019-02-14 | WindowServer: Post error messages to clients on protocol failure. | Andreas Kling | |
2019-02-14 | WindowServer: Refactor WSClientConnection to have one function per request. | Andreas Kling | |
This is a lot nicer than the big switch full of code. This stuff has a bit of a "please generate me instead" vibe to it, but I need to mess around with it some more to figure out what the needs are. This patch also unbreaks global cursor tracking, which was forgotten in the big messaging refactoring. | |||
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: Don't spawn new processes with WindowServer as parent. | Andreas Kling | |
I don't want to have to wait() on them from the WindowServer. Let's just set new processes free and someone else will take care of them. | |||
2019-02-13 | WindowServer: Forgot to actually set 'had_any_timer' after we had any timer. | Andreas Kling | |
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-13 | WindowServer: Try out a new IterationDecision thing for lambda iteration. | Andreas Kling | |
2019-02-13 | WindowServer: Switch menubar based on the currently active window. | Andreas Kling | |
2019-02-12 | WindowServer: Process window mouse events in the correct z-order. | Andreas Kling | |
2019-02-12 | WindowServer: Menu windows shouldn't steal focus when clicked. | Andreas Kling | |
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 | WindowServer: Don't crash when trying to open an empty menu. | Andreas Kling | |
2019-02-12 | WindowServer: Made a slightly nicer icon for the system menu. | Andreas Kling | |
2019-02-12 | WindowServer: Draw menu windows above normal windows. | Andreas Kling | |
2019-02-12 | Fix some compilation warnings. | Andreas Kling | |
2019-02-12 | WindowServer: Add a WSWindowType enum. | Andreas Kling | |
So far there's only Normal and Menu. Maybe we'll need more later. | |||
2019-02-12 | WindowServer: Send all mouse events inside the menubar rect to the menubar. | Andreas Kling | |
2019-02-12 | WindowServer: Make it possible to launch a terminal from the system menu. | Andreas Kling | |
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 | 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 | WindowServer: Always include the system menu in the menubar. | Andreas Kling | |
Solve this by adding a for_each_active_menubar_menu() iteration helper that automagically visits the system menu before the current menubar's menus. | |||
2019-02-12 | WindowServer: More work on the menu system. | Andreas Kling | |
Menus are now tied to a Process (by WeakPtr.) This will allow us to pass notifications to the correct event stream. | |||
2019-02-12 | Add API's and plumbing for WindowServer clients to make menus. | Andreas Kling | |
2019-02-11 | WindowServer: Let's call the default menu "Dummy" for now. | Andreas Kling | |
2019-02-11 | WindowServer: Add a bunch of horizontal padding to menu items. | Andreas Kling | |
All right, this looks a lot nicer. :^) | |||
2019-02-11 | WindowServer: Make automatic menu dismissal feel more "natural." | Andreas Kling | |
2019-02-11 | WindowServer: Oops, we have to keep processing WSMessages with !m_process. | Andreas Kling | |
Otherwise we'll never handle WM_DestroyWindow and the window sticks around. | |||
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. |