Age | Commit message (Collapse) | Author |
|
|
|
|
|
Clicking the button generates a WindowCloseRequest event which the client app
then has to deal with. The default behavior for GWindow is to close() itself.
I also added a flag, GWindow::should_exit_event_loop_on_close() which does
what it sounds like it does.
This patch exposed some bugs in GWindow and GWidget teardown.
|
|
LizaRegular is quickly becoming my favorite bitmap font. It's so pretty :^)
|
|
Start using it right away for window titles.
|
|
Now the filesystem is generated on-the-fly instead of manually adding and
removing inodes as processes spawn and die.
The code is convoluted and bloated as I wrote it while sleepless. However,
it's still vastly better than the old ProcFS, so I'm committing it.
I also added /proc/PID/fd/N symlinks for each of a process's open fd's.
|
|
I like the look of this right now. Maybe later I'll feel differently.
|
|
|
|
You're never gonna be right 100% of the time when guessing how much buffer
space you need. This avoids having to make that type of decision in a bunch
of cases. :^)
|
|
Implement this functionality by adding global cursor tracking.
It's currently only possible for one GWidget per GWindow to track the cursor.
|
|
Work now happens in terms of two messages:
- WM_ClientWantsToPaint
- WM_ClientFinishedPaint
This feels fairly obvious compared to the old Paint/Invalidate.
|
|
|
|
Also do the same for WSMessageLoop and WSMessageReceiver. More to come.
|
|
|
|
|
|
|
|
|
|
To start painting, call:
gui$get_window_backing_store()
Then finish up with:
gui$release_window_backing_store()
Process will retain the underlying GraphicsBitmap behind the scenes.
This fixes racing between the WindowServer and GUI clients.
This patch also adds a WSWindowLocker that is exactly what it sounds like.
|
|
|
|
Add a WSWindowInvalidationEvent that carries a rect instead of having an
awkward single-purpose rect in WSEvent.
Flesh out WSKeyEvent a bit more.
|
|
This is useful for debugging since I'm often wondering which process some
window belongs to (and what the window ID is.)
|
|
|
|
Previously we'd blit every pixel in every window that intersected any dirty
rect to the back buffer. With this patch, we limit ourselves to blitting the
pixels inside the actual dirty rects.
There's still a lot of optimizations to make in this code.
|
|
|
|
|
|
|
|
|
|
This ensures that the drag color shows up immediately.
|
|
Also get rid of an unnecessary invalidation on drag end.
|
|
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.
|
|
|
|
|
|
Use this in WindowServer to avoid getting blocked in select() when
there are pending injected events.
|
|
Use this in Terminal to only invalidate rows where anything changed.
|
|
Use this to implement different looking Terminal cursors depending on
the window active state.
|
|
|
|
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.
|
|
Reorganize the loops to make it go fast. The draw_rect() part of painting
window frames is now ~2.65x faster.
|
|
|
|
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.
|
|
This turned into a huge refactoring that somehow also includes
making locks recursive/reentrant.
|