Age | Commit message (Collapse) | Author | |
---|---|---|---|
2019-01-14 | Start refactoring the windowing system to use an event loop. | Andreas Kling | |
Userspace programs can now open /dev/gui_events and read a stream of GUI_Event structs one at a time. I was stuck on a stupid problem where we'd reenter Scheduler::yield() due to having one of the has_data_available_for_reading() implementations using locks. | |||
2019-01-14 | Always inline the locks. | Andreas Kling | |
2019-01-14 | Add Vector::take_first(). | Andreas Kling | |
2019-01-14 | Make QtCreator stop complaining about the ASSERT macro. | Andreas Kling | |
2019-01-14 | TTY::write() should return the number of bytes written. | Andreas Kling | |
2019-01-13 | Keep back and front painters around in WindowManager. | Andreas Kling | |
The internal state never changes in some meaningful way for these (at this time.) | |||
2019-01-13 | gui$create_widget() shouldn't try to make button corners opaque. | Andreas Kling | |
2019-01-13 | Flush the old and new cursor rects in a single rect. | Andreas Kling | |
2019-01-13 | Make a nice bitmap cursor. | Andreas Kling | |
It's rendered as two CharacterBitmaps right now because I don't have a good primitive for this and I wanted it right away. I should add 2-color bitmaps.. Also make a neat little effect where the cursor becomes inverted on press. | |||
2019-01-13 | Minor GUI API things + make Button corners properly transparent. | Andreas Kling | |
2019-01-13 | Let's use the existing Rect and Color types in the GUI API. | Andreas Kling | |
Any type that doesn't depend on indirect data can probably be used here. | |||
2019-01-13 | Add basic GUI API for creating labels and buttons. | Andreas Kling | |
2019-01-13 | Fix Userland build. | Andreas Kling | |
2019-01-13 | Start working on a GUI kernel API. | Andreas Kling | |
2019-01-13 | Make GraphicsBitmaps be Region-backed when running in the kernel. | Andreas Kling | |
This is a lot better than having them in kmalloc memory. I'm gonna need a way to keep track of which process owns which bitmap eventually, maybe through some sort of resource keying system. We'll see. | |||
2019-01-13 | Have WindowManager::invalidate() unite dirty rects that intersect each other. | Andreas Kling | |
This is kinda primitive but it avoids double-draw when slowly dragging stuff. | |||
2019-01-12 | Don't use dword-by-dword memset/memcpy if the addresses are unaligned. | Andreas Kling | |
Also don't enable the large kmalloc catcher by default. | |||
2019-01-12 | Paper over a race in DoubleBuffer. | Andreas Kling | |
I'm still somewhat okay throwing InterruptDisabler at races as they screw me. Eventually I'm gonna have to devise a different strategy though. | |||
2019-01-12 | Print process name and PID when kmalloc() panics. | Andreas Kling | |
2019-01-12 | Optimize WindowManager::flush() with fast_dword_copy(). | Andreas Kling | |
2019-01-12 | Give GraphicsBitmap a member for the pitch. | Andreas Kling | |
2019-01-12 | Make FrameBuffer::flush() a no-op when building outside of SDL. | Andreas Kling | |
2019-01-12 | Draw the cursor *after* flushing all dirty rects. | Andreas Kling | |
2019-01-12 | Remove FrameBuffer::blit() since it was superseded by Painter::blit(). | Andreas Kling | |
2019-01-12 | Add fast dword-sized copy and fill to the Painter code. | Andreas Kling | |
2019-01-12 | Make the kernel's memcpy() and memset() go fast with dword copies. | Andreas Kling | |
Also I learned that the ABI allows us to assume DF=0 on function entry. | |||
2019-01-12 | Fix broken focus rects (due to yet another Rect semantics bug.) | Andreas Kling | |
2019-01-12 | ListBox: Fix item rect inconsistency between paints and clicks. | Andreas Kling | |
2019-01-12 | Fix more underdraw bugs in Button due to new Rect semantics. | Andreas Kling | |
2019-01-12 | Clip painters to widget rect by default to prevent overdraw. | Andreas Kling | |
2019-01-12 | Update Painter class to the new coding style. | Andreas Kling | |
2019-01-12 | Fix rect drawing to grok new Rect semantics. | Andreas Kling | |
2019-01-12 | Give WindowManager member copies of the Framebuffer& and the screen rect. | Andreas Kling | |
These are used all the time, let's avoid function calls for them. | |||
2019-01-12 | WindowManager::invalidate() can just use Rect::intersection(). | Andreas Kling | |
2019-01-12 | WindowManager should only flush pixels inside the screen rect. | Andreas Kling | |
2019-01-12 | Tidy up the h/v line drawing loops a bit. | Andreas Kling | |
2019-01-12 | Make the Event class virtual. | Andreas Kling | |
I realized that we're leaking all the members in Event subclasses. | |||
2019-01-12 | Add a Vector::clear_with_capacity() that doesn't release the backing store. | Andreas Kling | |
Use this for WindowManager's dirty rects to avoid kmalloc traffic. | |||
2019-01-12 | Redraw both incoming and outgoing widget when changing focus. | Andreas Kling | |
2019-01-12 | Coalesce mouse events to make the GUI go fast. | Andreas Kling | |
A simple but effective optimization that avoids tons of redraw. :^) | |||
2019-01-12 | Let the EventLoop drive the WindowManager through WM_Compose events. | Andreas Kling | |
2019-01-12 | All right, let's double buffer the display. It looks so much better. | Andreas Kling | |
This performs like dogshit. I need to make some optimizations. :^) | |||
2019-01-12 | Make PS2MouseDevice behave more like a proper character device. | Andreas Kling | |
Get rid of the goofy MouseClient interface and have the GUI event loop just read mouse data from the character device. The previous approach was awful as it was sending us into random GUI code in the mouse interrupt handler. | |||
2019-01-12 | Only initiate window title bar drags for left mouse button clicks. | Andreas Kling | |
2019-01-12 | Fix unpainted area in Button rendering. | Andreas Kling | |
2019-01-12 | Tidy up window border rendering a bit. | Andreas Kling | |
2019-01-12 | Get rid of the "root widget" concept in WindowManager. | Andreas Kling | |
Instead just create a GraphicsBitmap wrapper around the display framebuffer and teach Painter how to draw directly into a GraphicsBitmap. | |||
2019-01-12 | Reduce PS2MouseDevice debug spam in every dang mouse interrupt. | Andreas Kling | |
2019-01-12 | Don't repaint the root layer in invalidated areas with windows over them. | Andreas Kling | |
2019-01-12 | Ignore WindowManager invalidations inside already invalidated rects. | Andreas Kling | |