1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-30 17:38:12 +00:00
Commit graph

14148 commits

Author SHA1 Message Date
Andreas Kling
e4498194c2 LibGUI: Remove unnecessary timer in GProgressBar. 2019-03-22 02:49:57 +01:00
Andreas Kling
c3b0c1ba68 LibGUI: Add a GProgressBar widget. 2019-03-22 02:49:45 +01:00
Andreas Kling
23fe630057 AK: Allow printing a literal '%' character with the printf family. 2019-03-22 01:50:32 +01:00
Andreas Kling
7c0a185970 Use the PNG loader for all images, and get rid of the .rgb files. 2019-03-22 00:21:03 +01:00
Andreas Kling
c2a38c86cf AK: Fix busted __udivmoddi4() implementation. 2019-03-21 17:33:06 +01:00
Andreas Kling
1484a9eabd WindowServer: Remove some old commented-out code. 2019-03-21 17:22:29 +01:00
Andreas Kling
796bc56a13 PNGLoader: Reduce unfiltering branchiness even more.
Use a dummy scanline for y=0 filled with all zeroes to avoid having to check
y on every iteration before grabbing color data from scanline[y - 1].
2019-03-21 16:55:31 +01:00
Andreas Kling
cd1afde48c PNGLoader: Templatize the unfiltering functions to reduce branchiness.
This also allows us to dodge processing alpha values in non-alpha PNGs
without a branch.
2019-03-21 16:45:04 +01:00
Andreas Kling
cfc521d57e PNGLoader: Reorganize the unfiltering code to make it easier to work with. 2019-03-21 16:19:11 +01:00
Andreas Kling
e4dfd5a3a4 WindowServer: Support PNG wallpapers.
Fix up /bin/pape so it tells the WindowServer which wallpaper file to use.
2019-03-21 15:54:19 +01:00
Andreas Kling
fe25f957e5 PNGLoader: Allocate enough space for the compressed data buffer up front.
This is a 2x speedup on wallpaper loading.
2019-03-21 14:08:14 +01:00
Andreas Kling
332b5a96f6 PNGLoader: Remove a bunch of unnecessary data copying.
Use ByteBuffer::wrap() to avoid copying buffers around a bit. This is about
a 10% speedup on loading a wallpaper-type PNG.
2019-03-21 13:58:40 +01:00
Andreas Kling
9dfcd95cd7 Use 64-bit integers inside Stopwatch to enable longer timings. 2019-03-21 13:41:36 +01:00
Andreas Kling
0114c61cf1 Userland: Turn off double buffering in QuickShow.
Since this program is primarily used to display potentially huge but still
static images, let's not put extra strain on the system by double buffering.
2019-03-21 13:31:47 +01:00
Andreas Kling
5708c12e24 LibC: Add PAGE_SIZE to limits.h 2019-03-21 13:31:27 +01:00
Andreas Kling
93a6681388 LibC: malloc() should use mmap() directly for allocations >= PAGE_SIZE.
This is a solid speedup on PNG loading, and basically everything else.
Once again I find a way to defer writing a better allocator for now. :^)
2019-03-21 13:29:20 +01:00
Andreas Kling
65348e7dc1 PNGLoader: Support for color type 2 (RGB triplets) and multiple IDAT chunks. 2019-03-21 05:25:54 +01:00
Andreas Kling
42755e98cf SharedGraphics: Implement a simple PNG decoder.
This is extremely unoptimized, but it does successfully load "folder32.png"
so it must be at least somewhat correct. :^)
2019-03-21 03:57:42 +01:00
Andreas Kling
ed2303e2d8 TextEditor: The delete key should work even when there's no selection. 2019-03-20 23:11:00 +01:00
Andreas Kling
be4533717a FileManager: Add ability to create new directories. 2019-03-20 22:40:06 +01:00
Andreas Kling
1030e6b848 FileManager: Add a "Location:" label. 2019-03-20 22:01:02 +01:00
Andreas Kling
86e2348b74 Kernel+LibC: Don't crash upon traversal of large directories. 2019-03-20 18:31:12 +01:00
Andreas Kling
7b32afdcfc Kernel: Oops, forgot to add Alarm.h earlier. Here it is. 2019-03-20 18:16:15 +01:00
Andreas Kling
f0915641c5 TextEditor: Add "delete" action. 2019-03-20 18:16:04 +01:00
Andreas Kling
daa1dcb5e8 FileManager: Use a GTextEditor for the location bar + tweak icons. 2019-03-20 18:12:56 +01:00
Andreas Kling
367bb9e4eb Kernel: Remove ioctl for getting a socket peer's PID.
Now that everything is nice and mature, the WindowServer can just use the
client PID it receives in the Greeting message, and we can get rid of this
hacky ioctl. :^)
2019-03-20 17:14:48 +01:00
Andreas Kling
bc1da7f1fd Kernel: Snooze the NetworkTask until there are incoming packets to process.
This is accomplished using a new Alarm class and a BlockedSnoozing state.
Basically, you call Process::snooze_until(some_alarm) and then the scheduler
won't wake up the process until some_alarm.is_ringing() returns true.
2019-03-20 17:09:46 +01:00
Andreas Kling
93aa4d581d Meta: Tweak ReadMe and add a new screenshot. 2019-03-20 15:52:37 +01:00
Andreas Kling
cdb82f6fbb LibC: Fix bug in scanf() family where we'd capture invalid data. 2019-03-20 15:29:04 +01:00
Andreas Kling
951377e93e GTableView: Add ability to hide individual columns at view-level.
Use this in IRCClient to hide the "sender" column in the server message view
since everything in that view comes from the "Server" anyway.
2019-03-20 13:36:07 +01:00
Andreas Kling
d17a91f185 Move WindowServer into Servers. 2019-03-20 04:34:14 +01:00
Andreas Kling
9120b05a40 Rename DNSLookupServer => LookupServer. 2019-03-20 04:26:30 +01:00
Andreas Kling
67009cee8e IRCClient: Add ability to change nickname. 2019-03-20 04:21:58 +01:00
Andreas Kling
4ea625e08b Userland: Allow ping <hostname> :^) 2019-03-20 03:38:09 +01:00
Andreas Kling
696f9c5bc0 LibC: Let gethostbyname() handle IPv4 address as input.
It would be neat to do a reverse lookup too, but for now we just parse
the IPv4 address into a dword.
2019-03-20 03:37:05 +01:00
Andreas Kling
f47945759b LibGUI: Make GTableModel a retainable object.
It became clear that this class needs to support multiple owners.
2019-03-20 03:27:07 +01:00
Andreas Kling
41c744b3c8 Kernel: Don't panic if a call redirected to Device::open() has an error.
Just pass the error to the user. I hit this when opening so many Terminal
windows that PTYMultiplexer::open() ran out of master/slave pairs.
2019-03-20 02:55:12 +01:00
Andreas Kling
6f966ca51d Kernel: Accepting sockets don't need to retain the client sockets.
This is all taken care of by the respective FileDescriptors.
Before this patch, we were leaking every single socket, not great!
2019-03-20 02:48:02 +01:00
Andreas Kling
e48cbf3c8c Kernel: connect() should fail with EISCONN for already-connected sockets.
Also make sure to reset the socket role if Socket::connect() fails.
2019-03-20 02:38:36 +01:00
Andreas Kling
4aa0ab4e08 Kernel: Fix race between accept() and connect().
We had a bug where an accepted socket would appear to be EOF/disconnected
on the accepting side until the connecting side had called attach_fd().

Fix this by adding a new SocketRole::Connecting state.
2019-03-20 02:33:51 +01:00
Andreas Kling
31d3616027 WindowServer: Don't crash when accept() fails, just log an error.
This was easy to hit by opening enough windows to hit the max open file
descriptors limit. :^)
2019-03-20 02:31:31 +01:00
Andreas Kling
a02c945ef2 Kernel: DoubleBuffer can return early if read/write is called with !size. 2019-03-20 02:12:40 +01:00
Andreas Kling
1c423f7691 Terminal: Disable the semitransparent Terminal effect for now.
It's cool and everything but the lag is annoying me while I'm trying to
get shit done. I'll definitely reenable it once it's been optimized.
2019-03-20 02:10:44 +01:00
Andreas Kling
0e4a1936ca LibC: Implement gethostbyname() by talking to the DNSLookupServer.
We now talk to the lookup server over a local socket and it does the lookup
on our behalf. Including some retry logic, which is nice, because it seems
like DNS requests disappear in the ether pretty damn often where I am.
2019-03-20 01:15:22 +01:00
Andreas Kling
3ecfde193a GEventLoop: Quit the event loop on EOF from the WindowServer. 2019-03-20 01:10:52 +01:00
Andreas Kling
fe2fa4ac80 DNSLookupServer: Start working on a userspace DNS resolver.
This doesn't have any server functionality just yet, but it does post
decent-looking DNS queries and parse the responses.
2019-03-19 16:29:06 +01:00
Andreas Kling
d0559c0e27 IRCClient: Scroll windows to bottom when new messages arrive.
This will need some tweaking to feel truly good, but this is already
better than just staying at the top while messages come in.
2019-03-19 03:09:51 +01:00
Andreas Kling
9551e2e4b5 LibGUI: Add GScrollableWidget::scroll_to_bottom/top(). 2019-03-19 03:09:21 +01:00
Andreas Kling
e15cc4509f LibGUI: More GInputBox refinements.
Fix some GBoxLayout bugs to make the buttons in GInputBox line up better.
There are still some imperfections due to rounding errors.
2019-03-19 03:00:42 +01:00
Andreas Kling
46577a6948 GTextEditor: Fix invalidation glitches in single-line mode. 2019-03-19 02:45:49 +01:00