summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-01-13Have 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-12Don'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-12Paper 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-12Print process name and PID when kmalloc() panics.Andreas Kling
2019-01-12Optimize WindowManager::flush() with fast_dword_copy().Andreas Kling
2019-01-12Give GraphicsBitmap a member for the pitch.Andreas Kling
2019-01-12Make FrameBuffer::flush() a no-op when building outside of SDL.Andreas Kling
2019-01-12Draw the cursor *after* flushing all dirty rects.Andreas Kling
2019-01-12Remove FrameBuffer::blit() since it was superseded by Painter::blit().Andreas Kling
2019-01-12Add fast dword-sized copy and fill to the Painter code.Andreas Kling
2019-01-12Make 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-12Fix broken focus rects (due to yet another Rect semantics bug.)Andreas Kling
2019-01-12ListBox: Fix item rect inconsistency between paints and clicks.Andreas Kling
2019-01-12Fix more underdraw bugs in Button due to new Rect semantics.Andreas Kling
2019-01-12Clip painters to widget rect by default to prevent overdraw.Andreas Kling
2019-01-12Update Painter class to the new coding style.Andreas Kling
2019-01-12Fix rect drawing to grok new Rect semantics.Andreas Kling
2019-01-12Give 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-12WindowManager::invalidate() can just use Rect::intersection().Andreas Kling
2019-01-12WindowManager should only flush pixels inside the screen rect.Andreas Kling
2019-01-12Tidy up the h/v line drawing loops a bit.Andreas Kling
2019-01-12Make the Event class virtual.Andreas Kling
I realized that we're leaking all the members in Event subclasses.
2019-01-12Add 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-12Redraw both incoming and outgoing widget when changing focus.Andreas Kling
2019-01-12Coalesce mouse events to make the GUI go fast.Andreas Kling
A simple but effective optimization that avoids tons of redraw. :^)
2019-01-12Let the EventLoop drive the WindowManager through WM_Compose events.Andreas Kling
2019-01-12All 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-12Make 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-12Only initiate window title bar drags for left mouse button clicks.Andreas Kling
2019-01-12Fix unpainted area in Button rendering.Andreas Kling
2019-01-12Tidy up window border rendering a bit.Andreas Kling
2019-01-12Get 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-12Reduce PS2MouseDevice debug spam in every dang mouse interrupt.Andreas Kling
2019-01-12Don't repaint the root layer in invalidated areas with windows over them.Andreas Kling
2019-01-12Ignore WindowManager invalidations inside already invalidated rects.Andreas Kling
2019-01-12Start refactoring the WindowManager to be invalidation driven.Andreas Kling
2019-01-12Make the kernel's memset do a "rep stosb" because.Andreas Kling
2019-01-12Constrain the mouse cursor to keep it inside the screen rect.Andreas Kling
2019-01-11Hook up the Keyboard device to the AbstractScreen.Andreas Kling
Basic text editing in a TextBox works. How very cool :^)
2019-01-11Throw up some widgets on screen so we can see what they look like.Andreas Kling
2019-01-11Hook up the PS2MouseDevice to the AbstractScreen+WindowManager.Andreas Kling
Render the mouse cursor by xor'ing the pixels. I don't know anything about hardware cursors yet and this way we don't need to recompose the window hierarchy every time you move the mouse. :^)
2019-01-11Teach PS2MouseDevice to read the left and right buttons.Andreas Kling
2019-01-11Add a simple PS/2 mouse device.Andreas Kling
It's not hooked up to anything just yet, but it does read movement deltas.
2019-01-11Fix uninitialized AbstractScreen instance pointer.Andreas Kling
...yeah yeah, one day I'm gonna zero out the kernel's BSS segment. Soon..
2019-01-10Hook everything up to run the GUI on top of the kernel.Andreas Kling
Okay things kinda sorta work. Both Bochs and QEMU now boot into GUI mode. There's a ton of stuff that doesn't make sense and so many things to rework. Still it's quite cool to have made it this far. :^)
2019-01-10Make Widgets/ build inside the kernel.Andreas Kling
2019-01-10Rename CBitmap to CharacterBitmap.Andreas Kling
2019-01-10Let's have an RGBA32 typedef for raw pixel data.Andreas Kling
2019-01-10ColorSDL.cpp -> Color.cppAndreas Kling
2019-01-10Merge EventLoopSDL into EventLoop.Andreas Kling