summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-01-15Add internal locking to DoubleBuffer.Andreas Kling
2019-01-15Rename WindowComposer -> WindowServer.Andreas Kling
I keep referring to it as the windowing server anyway.
2019-01-15Terminal: optimize repaints a bunch.Andreas Kling
We track dirty character cells + pending whole-terminal scrolls. This drastically reduces the number of pixels pushed.
2019-01-15Allow character devices to block write attempts until there is more space.Andreas Kling
2019-01-15Make it possible for a process to switch controlling terminals.Andreas Kling
Via the TIOCSCTTY and TIOCNOTTY ioctls.
2019-01-15Let's not require TERM=ansi for tgetent() to work.Andreas Kling
2019-01-15Slap an InterruptDisabler on gui$invalidate_window().Andreas Kling
This is obviously not a permanent solution but it works now to allow the windowing system to withstand invalidation spam.
2019-01-15Let's do dword-at-a-time memcpy() and memset() in userspace as well.Andreas Kling
Also fix a dumb bug that showed up when I was memsetting something other than zeroes.
2019-01-15Minor Terminal tweaks.Andreas Kling
2019-01-15Terminal: Add some inset and line spacing.Andreas Kling
This is starting to feel vaguely usable! :^)
2019-01-15Terminal: basic ANSI color support.Andreas Kling
2019-01-15Add very basic KeyDown events to the GUI event stream.Andreas Kling
The Terminal program now hosts an interactive shell. :^)
2019-01-15Let's just assume we have 32MB of physical memory to work with.Andreas Kling
I should eventually figure out the exact amount of memory but not now.
2019-01-15Add basic PTY support.Andreas Kling
For now, there are four hard-coded PTYs: /dev/pt{m,s}[0123] Use this in the Terminal to open a pty pair and spawn a shell.
2019-01-15Add Terminal/.gitignoreAndreas Kling
2019-01-15Factor out individual glyph drawing into Painter::draw_glyph().Andreas Kling
2019-01-15Start working on a graphical Terminal program.Andreas Kling
2019-01-14Build Painter & friends into LibC. Use it in the GUI test app.Andreas Kling
2019-01-14So long SDL stuff. You were a nice bootstrapping environment.Andreas Kling
2019-01-14Share GraphicsBitmaps between the windowing server and the client process.Andreas Kling
This is pretty cool. :^) GraphicsBitmaps are now mapped into both the server and the client address space (usually at different addresses but that doesn't matter.) Added a GUI syscall for getting a window's backing store, and another one for invalidating a window so that the server redraws it.
2019-01-14Start 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-14Always inline the locks.Andreas Kling
2019-01-14Add Vector::take_first().Andreas Kling
2019-01-14Make QtCreator stop complaining about the ASSERT macro.Andreas Kling
2019-01-14TTY::write() should return the number of bytes written.Andreas Kling
2019-01-13Keep 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-13gui$create_widget() shouldn't try to make button corners opaque.Andreas Kling
2019-01-13Flush the old and new cursor rects in a single rect.Andreas Kling
2019-01-13Make 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-13Minor GUI API things + make Button corners properly transparent.Andreas Kling
2019-01-13Let'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-13Add basic GUI API for creating labels and buttons.Andreas Kling
2019-01-13Fix Userland build.Andreas Kling
2019-01-13Start working on a GUI kernel API.Andreas Kling
2019-01-13Make 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-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