Age | Commit message (Collapse) | Author | |
---|---|---|---|
2019-01-15 | Add internal locking to DoubleBuffer. | Andreas Kling | |
2019-01-15 | Rename WindowComposer -> WindowServer. | Andreas Kling | |
I keep referring to it as the windowing server anyway. | |||
2019-01-15 | Terminal: 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-15 | Allow character devices to block write attempts until there is more space. | Andreas Kling | |
2019-01-15 | Make it possible for a process to switch controlling terminals. | Andreas Kling | |
Via the TIOCSCTTY and TIOCNOTTY ioctls. | |||
2019-01-15 | Let's not require TERM=ansi for tgetent() to work. | Andreas Kling | |
2019-01-15 | Slap 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-15 | Let'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-15 | Minor Terminal tweaks. | Andreas Kling | |
2019-01-15 | Terminal: Add some inset and line spacing. | Andreas Kling | |
This is starting to feel vaguely usable! :^) | |||
2019-01-15 | Terminal: basic ANSI color support. | Andreas Kling | |
2019-01-15 | Add very basic KeyDown events to the GUI event stream. | Andreas Kling | |
The Terminal program now hosts an interactive shell. :^) | |||
2019-01-15 | Let'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-15 | Add 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-15 | Add Terminal/.gitignore | Andreas Kling | |
2019-01-15 | Factor out individual glyph drawing into Painter::draw_glyph(). | Andreas Kling | |
2019-01-15 | Start working on a graphical Terminal program. | Andreas Kling | |
2019-01-14 | Build Painter & friends into LibC. Use it in the GUI test app. | Andreas Kling | |
2019-01-14 | So long SDL stuff. You were a nice bootstrapping environment. | Andreas Kling | |
2019-01-14 | Share 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-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 | |