Andreas Kling
8eae89a405
Start bringing up LibGUI properly (formerly Widgets.)
2019-01-20 05:48:43 +01:00
Andreas Kling
7e5b81fe48
Make a SharedGraphics directory for classes shared between Kernel and LibGUI.
2019-01-19 23:22:46 +01:00
Andreas Kling
b413e234e1
WSWindowManager: Minor style fixes.
2019-01-19 14:33:59 +01:00
Andreas Kling
102a5add16
Invalidate the window when starting to drag it.
...
This ensures that the drag color shows up immediately.
2019-01-19 14:29:59 +01:00
Andreas Kling
4bffdd2394
WindowServer: Use a different border color for windows being dragged.
...
Also get rid of an unnecessary invalidation on drag end.
2019-01-18 15:55:28 +01:00
Andreas Kling
f7cc454162
Add mechanism to expose kernel variables to userspace via ProcFS.
...
Only booleans are supported at first. More types can be added easily.
Use this to add /proc/sys/wm_flash_flush which when enabled flashes pending
screen flush rects in yellow before they happen.
2019-01-18 15:01:40 +01:00
Andreas Kling
9454c5dd52
WindowServer: Merge WSFrameBuffer into WSScreen.
2019-01-18 05:41:15 +01:00
Andreas Kling
bb28c143fd
Update coding style in WSWindowManager.
2019-01-18 05:33:35 +01:00
Andreas Kling
dff5051905
Support polling with select() by using a zero timeout.
...
Use this in WindowServer to avoid getting blocked in select() when
there are pending injected events.
2019-01-18 05:28:07 +01:00
Andreas Kling
dff70021ab
Make it possible to invalidate only a portion of a window.
...
Use this in Terminal to only invalidate rows where anything changed.
2019-01-18 04:37:49 +01:00
Andreas Kling
dad58db757
Add WindowActivated and WindowDeactivated events.
...
Use this to implement different looking Terminal cursors depending on
the window active state.
2019-01-17 17:38:04 +01:00
Andreas Kling
133f9aa352
WindowServer: Slap everything with locks.
2019-01-17 16:21:04 +01:00
Andreas Kling
61bba1b9dd
WindowServer: Skip blitting windows into the back buffer if possible.
...
Windows that don't intersect any of the dirty rects don't need to be copied
into the back buffer since they won't be affected by the subsequent flushes.
2019-01-16 20:21:44 +01:00
Andreas Kling
b6c3df5188
Optimize Painter::draw_rect() a bit.
...
Reorganize the loops to make it go fast. The draw_rect() part of painting
window frames is now ~2.65x faster.
2019-01-16 20:21:41 +01:00
Andreas Kling
7750e6952b
Move some more classes to the new coding style.
2019-01-16 17:57:58 +01:00
Andreas Kling
a2ec09bc20
Allow the scheduler to unblock the current process.
...
It's a bit confusing that the "current" process is not actually running
while we're inside the scheduler. Perhaps the scheduler should redirect
"current" to its own dummy Process. I'm not sure.
Regardless, this patch improves responsiveness by allowing the scheduler
to unblock a process right after it calls select() in case it already has
a pending wakeup request.
2019-01-16 17:47:18 +01:00
Andreas Kling
f7ca6d254d
Tear out or duplicate what's unique for WindowServer from Widgets.
...
This turned into a huge refactoring that somehow also includes
making locks recursive/reentrant.
2019-01-16 16:03:50 +01:00