summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-04-06LibCrypto: Add missing ASN1 tag kindsstelar7
2023-04-06AK: Add to_string() for IPv4Addressstelar7
2023-04-06LibGfx: Pass in format and size to webp image decoding functionNico Weber
2023-04-06LibGfx: Teach webp image reading function to read entropy coded imagesNico Weber
2023-04-06LibGfx: Move webp image decoding function up a bitNico Weber
Pure code move, no changes (except that this allows removing the explicit prototype for this function, so it removes that).
2023-04-06LibGfx: Move webp bitmap decoding code into its own functionNico Weber
2023-04-06LibGfx: Implement hopefully correct max_symbol handling in webp decoderNico Weber
The spec is at best misleading here, suggesting that max_symbol should be set to "num_code_lengths" if it's not explicitly stored. But num_code_lengths doesn't mean the num_code_lengths mentioned a few lines further up in the spec, but alphabet_size! (I had to cheat and look at libwebp instead of the spec for this: See vp8l_dec.c, ReadHuffmanCode() which passes alphabet_size to ReadHuffmanCodeLengths() as num_symbols, and ReadHuffmanCodeLengths() then sets max_symbol to that.) I haven't yet found a file that uses max_symbol, so this isn't actually tested. But it's close to what's in libwebp, so maybe it works!
2023-04-06LibGfx: Read transform type in webp lossless decoderNico Weber
Doesn't do anything with it yet, so this only makes the "not yet implemented" message a bit more detailed.
2023-04-06LibGfx: Remove some noisy dbgln_if()s in webp decoderNico Weber
Pixel decoding mostly works, so there's no need to log all this data.
2023-04-05LibWeb: Use intrinsic aspect ratio when calculating max content heightmatcool
2023-04-05tar: Use BufferedFile for reading inputsTim Schumacher
2023-04-05lzcat: Use BufferedFile for reading inputsTim Schumacher
2023-04-05xzcat: Use BufferedFile for reading inputsTim Schumacher
This improves the decompression time of `clang-15.0.7.src.tar.xz` from 41 seconds down to about 5 seconds. The reason for this very significant improvement is that LZMA, the underlying compression of XZ, fills its range decompressor one byte at a time, causing a lot of overhead at the syscall barrier.
2023-04-05LibCompress: Copy LZMA repetitions from the buffer in sequenceTim Schumacher
This improves the decompression time of `clang-15.0.7.src.tar.xz` from 5.2 seconds down to about 2.7 seconds.
2023-04-05AK+LibCompress: Break when seekback copying to a full CircularBufferTim Schumacher
Otherwise, we just end up infinitely looping while waiting for more space in the destination.
2023-04-05AK: Report copied bytes when seekback copying from CircularBufferTim Schumacher
Otherwise, we have no way of determining whether our copy was truncated by accident.
2023-04-05AK: Properly limit the internal seekback span for CircularBufferTim Schumacher
I was originally thinking in the wrong direction when adding this limit, we can at most read from the buffer until we reach the current write head. Since that write head is the reference point for the distance, we need to limit ourselves to that instead of the seekback limit (which is the maximum of how far back the distance can be).
2023-04-05Tests: Add test for webp lossless decodingNico Weber
2023-04-05LibGfx: Add some support for decoding lossless webp filesNico Weber
Missing: * Transform support (used by virtually all lossless webp files) * Meta prefix / entropy image support Working: * Decoding of regular image streams * Color cache This happens to be enough to be able to decode Tests/LibGfx/test-inputs/extended-lossless.webp The canonical prefix code is very similar to deflate's, enough so that this can use Compress::CanonicalCode (and take advantage of all the recent performance improvements there).
2023-04-05LibGfx: Add Bitmap::begin() / Bitmap::end()Nico Weber
Useful for accessing a bitmap like a linear container.
2023-04-05LibGfx: Read webp lossless header using LittleEndianInputBitStreamNico Weber
No behavior change. Covered by existing webp decoder tests :^)
2023-04-05Kernel/NVMeQueue: Use waitqueue in submit_sync_sqePankaj Raghav
The current way we handle sync commands is very ugly and depends on lot of preconditions. Now that we have an end_io handler for a request, we can use WaitQueue to do sync commands more elegantly. This does depend on block layer sending one request at a time but this change is a step forward towards better IO handling.
2023-04-05Kernel/NVMe: Redesign the tracking of requests in an NVMe QueuePankaj Raghav
There was a private variable named m_current_request which was used to track a single request at a time. This guarantee is given by the block layer where we wait on each IO. This design will break down in the driver once the block layer removes that constraint. Redesign the IO handling in a completely asynchronous way by maintaining requests up to queue depth. NVMeIO struct is introduced to track an IO submitted along with other information such whether the IO is still being processed and an endio callback which will be called during the end of a request. A hashmap private variable is created which will key based on the command id of a request with a value of NVMeIO. endio handler will come in handy if we are doing a sync request and we want to wake up the wait queue during the end. This change also simplified the code by removing some special condition in submit_sqe function, etc that were marked as FIXME for a long time.
2023-04-05Kernel/NVMe: Use an Atomic for command id instead of sq indexPankaj Raghav
Using sq_tail as cid makes an inherent assumption that we send only one IO at a time. Use an atomic variable instead for command id of a submission queue entry. As sq_tail is not used as cid anymore, remove m_prev_sq_tail which used to hold the last used sq_tail value.
2023-04-05Kernel: Mark sys$setpgid as not needing the big lockAndreas Kling
This function is already serialized by access to process protected data.
2023-04-05Kernel: Make Credentials the authority on process SIDAndreas Kling
The SID was duplicated between the process credentials and protected data. And to make matters worse, the credentials SID was not updated in sys$setsid. This patch fixes this by removing the SID from protected data and updating the credentials SID everywhere.
2023-04-05Kernel: Mark sys$setsid as not needing the big lockAndreas Kling
This function is now serialized by access to the process group list, and to the current process's protected data.
2023-04-05Kernel: Make ProcessGroup a ListedRefCounted and fix two racesAndreas Kling
This closes two race windows: - ProcessGroup removed itself from the "all process groups" list in its destructor. It was possible to walk the list between the last unref() and the destructor invocation, and grab a pointer to a ProcessGroup that was about to get deleted. - sys$setsid() could end up creating a process group that already existed, as there was a race window between checking if the PGID is used, and actually creating a ProcessGroup with that PGID.
2023-04-05Kernel: Make SlavePTY store pointer to MasterPTY as NonnullRefPtrAndreas Kling
No need for LockRefPtr here, as the pointer never changes after initialization.
2023-04-05Kernel: Move Process's TTY pointer into protected dataAndreas Kling
2023-04-05Kernel: Move Process's process group pointer into protected dataAndreas Kling
Now that it's no longer using LockRefPtr, we can actually move it into protected data. (LockRefPtr couldn't be stored there because protected data is immutable at times, and LockRefPtr uses some of its own bits for locking.)
2023-04-05Kernel: Stop using *LockRefPtr for TTYAndreas Kling
TTY was only stored in Process::m_tty, so make that a SpinlockProtected.
2023-04-05Kernel: Remove ancient InterruptDisabler in sys$setsidAndreas Kling
This was some pre-SMP historical artifact.
2023-04-05Kernel: Mark sys$faccessat as not needing the big lockAndreas Kling
2023-04-05LibWeb: Add multipart/form-data demo to formdata.htmlKenneth Myhra
2023-04-05LibWeb: Add FormData support to XHRKenneth Myhra
This adds FormData support to XHR so that it can post multipart/form-data encoded data.
2023-04-05LibWeb: Add get accessor to internal entry list of FormDataKenneth Myhra
2023-04-05LibWeb: Implement multipart/form-data encoding algorithmKenneth Myhra
2023-04-04LibWeb: Do not use OS error codes in the error callback for file:// URLsTimothy Flynn
The error code passed here is expected to be an HTTP error code. Passing errno codes does not make sense in that context.
2023-04-04LibWeb: Ensure fetch errors set their response types/codes appropriatelyTimothy Flynn
If we fail to set the response type to an error, calling code will think the fetch was successful. We also should not default to an error code of 200, which would also indicate success.
2023-04-04LibCompress: Order branches in Deflate's decode_codes() numericallyNico Weber
deflate_special_code_length_copy has value 16, so it should be before the two zero-filling branches for codes 17 and 18. Also, the initial if also refers to deflate_special_code_length_copy as well, so if it's repeated right in the next else, one has to keep it on the mental stack for shorter when reading this code. No behavior change.
2023-04-04LibCompress: Remove a few no-op continue statements in DeflateNico Weber
Alternatively, we could remove the else after the continue, but all branches here should be equally prominent, so this seems a bit nicer. No behavior change.
2023-04-04LibGUI: Open and increment ComboBox ListViews by exact stepsthankyouverycool
This feels a bit nicer and always places the current index at the top of visible content in long scrollable lists.
2023-04-04LibGUI: Don't hover AbstractView indicies outside visible contentthankyouverycool
Fixes ComboBox ListView erroneously setting and scrolling to indicies just outside its inner rect when mousing along the bottom or top of the frame.
2023-04-04LibGUI: Paint Scrollbar buttons with appropriate thread highlightingthankyouverycool
Similar to increment/decrement buttons on SpinBoxes, Scrollbar buttons now draw with the correct highlights after reaching their min or max.
2023-04-04LibGUI: Allow ComboBox windows to intersect Desktop's entire heightthankyouverycool
Minus a tasteful item height remainder. Ignoring Taskbar is okay now that the window is a PopUp. Also expands its width if intersection with the Desktop makes its ListView scrollable. ComboBox windows no longer intersect horizontally, remaining firmly "attached" to the editor, similar to other classic UIs.
2023-04-04LibGUI: Remove calculated_min_size() for ListViewsthankyouverycool
Originally implemented to handle resizable ComboBox windows, this "feature" no longer exists, so calculating min size is no longer necessary. The calculation was also failing to account for dynamic ListViews properly. This patch simplifies things by setting ComboBox ListView's minimum size explicitly and deferring to AbstractScrollableWidget's more flexible calculated implementation otherwise. Fixes FontPicker resizing incorrectly due to overly rigid ListViews.
2023-04-04Kernel: Mark inode watcher syscalls as not needing the big lockAndreas Kling
These syscalls are already protected by existing locking mechanisms, including the mutex inside InodeWatcher.
2023-04-04Kernel: Mark sys$killpg as not needing the big lockAndreas Kling
Same as sys$kill, nothing here that isn't already protected by existing locks.
2023-04-04Kernel: Mark sys$kill as not needing the big lockAndreas Kling
This syscall sends a signal to other threads or itself. This mechanism is already guarded by locking mechanisms, and widely used within the kernel without help from the big lock.