1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-08-02 12:07:47 +00:00
Commit graph

59669 commits

Author SHA1 Message Date
Andreas Kling
15fad649ea Userland: Make a simple /bin/cp for copying files. 2019-01-27 07:18:26 +01:00
Andreas Kling
a34bb07abb Make .bochsrc work with the stock Bochs on Ubuntu. 2019-01-27 07:17:24 +01:00
Andreas Kling
c7221b7dee Painter: Tell the compiler to flatten Font::draw_glyph().
I think that concludes the Terminal stress test optimizations for now.
2019-01-27 05:23:04 +01:00
Andreas Kling
c7b005c47b Font: Eagerly load all 256 glyphs. It's not that many. 2019-01-27 05:19:00 +01:00
Andreas Kling
2e370fa4d5 LibGUI: Don't consider a GWidget focused if the window is inactive. 2019-01-26 21:58:43 +01:00
Andreas Kling
25d045dee5 LibGUI: Reduce GEventLoop debug spam. 2019-01-26 21:44:13 +01:00
Andreas Kling
de2423de5f LibGUI: Flesh out focus implementation and more GTextBox work. 2019-01-26 11:24:16 +01:00
Andreas Kling
d72575d196 LibGUI: Start bringing up GTextBox in the standalone world. 2019-01-26 06:39:13 +01:00
Andreas Kling
57fb027216 LibC: Implement setjmp() and longjmp().
I think this is correct. The following registers are saved and restored:
EBX, ESI, EDI, EBP, ESP and EIP.
2019-01-26 06:25:24 +01:00
Andreas Kling
f34c0e414b WindowServer: Remove unused WSMessage::is_paint_event(). 2019-01-26 05:49:04 +01:00
Andreas Kling
9fa8d4e22f WindowServer: Rename the two painting phases.
Work now happens in terms of two messages:

    - WM_ClientWantsToPaint
    - WM_ClientFinishedPaint

This feels fairly obvious compared to the old Paint/Invalidate.
2019-01-26 05:45:47 +01:00
Andreas Kling
244d5bcce1 WindowServer: More event -> message renaming. 2019-01-26 05:35:45 +01:00
Andreas Kling
bba21adae3 WindowServer: Rename WSEvent to WSMessage.
Also do the same for WSMessageLoop and WSMessageReceiver. More to come.
2019-01-26 05:28:02 +01:00
Andreas Kling
7cf3c7461c Refactor GUI rendering model to be two-phased.
Instead of clients painting whenever they feel like it, we now ask that they
paint in response to a paint message.

After finishing painting, clients notify the WindowServer about the rect(s)
they painted into and then flush eventually happens, etc.

This stuff leaves us with a lot of badly named things. Need to fix that.
2019-01-26 05:20:32 +01:00
Andreas Kling
3a401d5249 LibC: Oops, unbreak isprint() once again. 2019-01-25 16:21:29 +01:00
Andreas Kling
6208cef154 Liza8x10: Tweak 'o' glyph. 2019-01-25 15:55:17 +01:00
Andreas Kling
a54848f451 Let's not auto-start guitest. guitest2 is so much more useful. 2019-01-25 15:52:55 +01:00
Andreas Kling
6e5db34b2e sh: Discard the current line on interrupt. 2019-01-25 15:49:54 +01:00
Andreas Kling
c6fdde37e7 Liza8x10: Minor glyph tweaks. 2019-01-25 15:43:19 +01:00
Andreas Kling
92c14ba887 Terminal: Support VKILL and VERASE. Also ignore null characters. 2019-01-25 15:34:21 +01:00
Andreas Kling
d059e684a2 Keyboard: Shift+backspace should generate backspace character. 2019-01-25 15:34:02 +01:00
Andreas Kling
8fa7d96f50 SharedGraphics: Import another 8x10 fixed-width font I made.
It's not perfect yet but it's quite nice to look at so I'll make this the
system default for now. :^)
2019-01-25 15:33:47 +01:00
Andreas Kling
6cc1a9d90a sh: Support basic backspacing on the command line.
It's weird that I didn't do this sooner. I don't know how many tims
I've had to retype a misspelled command. :^)
2019-01-25 15:11:56 +01:00
Andreas Kling
dfdca9d2a7 Kernel: Implement lazy FPU state restore. 2019-01-25 07:52:44 +01:00
Andreas Kling
2279f5eaa6 SharedGraphics: Fix broken clipping in draw_bitmap(). 2019-01-25 06:37:56 +01:00
Andreas Kling
5adaeeaa3b Terminal: Support setting the window title using Xterm escape sequences.
Use this in the /bin/sh prompt to keep the window title in sync with the
shell's working directory. :^)
2019-01-25 05:52:16 +01:00
Andreas Kling
5f14e22a31 WindowServer: Make dragging window frames look kinda cool. 2019-01-25 05:19:45 +01:00
Andreas Kling
d39f585f35 Kernel: Fix Syscall.h build when out of context. 2019-01-25 05:19:29 +01:00
Andreas Kling
0db72786cf Snazz up the windows with some title bar gradients. :^) 2019-01-25 05:02:32 +01:00
Andreas Kling
c6b7b92625 WindowServer: Put the desktop background color in a member. 2019-01-25 03:48:50 +01:00
Andreas Kling
623847cf6d Terminal: Tweak dark blue color. 2019-01-25 03:24:52 +01:00
Andreas Kling
a915dd7b27 WindowServer: Retain window backing stores while blitting them. 2019-01-25 03:07:55 +01:00
Andreas Kling
8a3af99416 SharedGraphics: Optimize Painter::draw_bitmap().
Manually peel as much as possible out of the loop for a ~100% speedup.
2019-01-25 02:39:45 +01:00
Andreas Kling
267a903dd0 Terminal: Redraw entire line if any of its characters are dirty.
This means we only have to do one fill_rect() per line and the whole process
ends up being ~10% faster than before.

Also added a read_tsc() syscall to give userspace access to the TSC.
2019-01-25 02:09:29 +01:00
Andreas Kling
11b73c38d8 Kernel: Fix incorrect EFAULTs when syscall would write into COW pages. 2019-01-25 01:39:15 +01:00
Andreas Kling
a4a106a430 Terminal: Use a more reasonable data structure for the emulation buffer. 2019-01-25 01:27:02 +01:00
Andreas Kling
e28de4ad5e Kernel: Dump registers and code on ring0 page fault. 2019-01-25 00:32:50 +01:00
Andreas Kling
b896d4b237 PTY: Disallow infinite writing to slaves.
This way we don't buffer ungodly amounts of output in the kernel when doing
e.g "cat /dev/random" on a PTY.
2019-01-25 00:13:54 +01:00
Andreas Kling
d7d78670c9 Kernel: Add some logging for backing store get/release syscalls. 2019-01-25 00:13:37 +01:00
Andreas Kling
86eae0f8df Let userland retain the window backing store while drawing into it.
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.
2019-01-24 23:44:19 +01:00
Andreas Kling
ccf3fc4618 TTY: MasterPTY's are always writable when open.
This should probably have some limitations eventually, but for now let's just
say we always accept data for shoveling over to SlavePTY.
2019-01-24 21:23:46 +01:00
Andreas Kling
2159d6bf76 Kernel: Fix bug in process termination on missing signal handler. 2019-01-24 21:22:13 +01:00
Andreas Kling
ff4d6afb60 Terminal: Turn ctrl+character into the appropriate ^character. 2019-01-24 20:43:45 +01:00
Andreas Kling
aa24547e12 Kernel: Finally stop exposing Region members to the public. 2019-01-24 18:09:46 +01:00
Andreas Kling
e683f611f1 LibC: Fix broken isprint(). I had misunderstood what's considered printable. 2019-01-24 17:22:19 +01:00
Andreas Kling
faaa0dbf1d Terminal: Various improvements to terminal emulation. 2019-01-23 19:59:17 +01:00
Andreas Kling
8d36c8f0d8 LibC: Tweak execvp() and execve() prototypes. 2019-01-23 17:09:00 +01:00
Andreas Kling
1483af406f LibC: fputs() shouldn't add a trailing newline, only puts(). 2019-01-23 16:24:39 +01:00
Andreas Kling
1ee8597ce4 Ext2FS: Include meta blocks in an inode's i_blocks count. 2019-01-23 15:43:29 +01:00
Andreas Kling
9ae20a153e Terminal: Add support for some more escape sequences. 2019-01-23 08:55:59 +01:00