Initially, SDF rendering was adopted for checkbox rendering because our
vector path renderer had not yet matured. This is no longer the case.
(cherry picked from commit 20c506f59747879d64c1b56fa58c6dd0e114e443)
...with a struct defined in LibWeb. This is a step towards uncoupling
LibWeb from LibGfx, so we can try third-party libraries for painting.
(cherry picked from commit 7a04a95c8a80ac115298b4107aed37f157133fe8)
This way we leak less LibWeb implementation details into WebContent.
(cherry picked from commit cbd566a3543d5ad50db3b68890ff23f76ca3b4bd)
Patched to fix build on SerenityOS
Co-authored-by: circl <circl.lastname@gmail.com>
This method does not paint, but only records painting commands that
could be passed to painting commands executor, which will perform
actual painting.
(cherry picked from commit c7133faf264901ace5e1fb3b97aaddc504d45005)
Before this change we were painting inner shadows lying outside of
viewport.
Improves painting performance on Github and Twitter where this command
is used a lot.
(cherry picked from commit 9be5867eb2f52c05a34024771ddffb6b981c878f)
Drop "outer" from the name because this struct is used for both inner
and outer shadows.
(cherry picked from commit 1c8d37d528424cad7d0c951ba87bddac33d65421)
Previously, clicking while holding shift without having previously made
any text selection would cause a crash.
(cherry picked from commit c79041344d7f9957bf810cd4db5330d8006ef0e3)
This struct had all members in CSSPixels and DevicePixels, but only the
latter are needed for painting.
Shrinks PaintOuterBoxShadowParams from 144 bytes to 72 bytes.
(cherry picked from commit 2dd3b6fcffce3b40ce8d0fe6333cd85b3464609e)
We now get the command line from the flattened devicetree, so manually
building a newer QEMU version to make the RPi "Get command line" mailbox
message work is not necessary anymore.
The test case was generated by opening `modular_property_8.jxl` in
Krita, then changing the Color Profile to Apple RGB and then exporting
as PNG. Finally, the conversion to JPEGXL was made with:
`cjxl --container=0 --modular=1 -d 0 -e 9 file.png icc.jxl`
Note that, we can't use Krita to export a jxl as it always create a
container instead of a raw stream. Also, this needs an old version of
`cjxl` (I used 0.7), as more recent version reencode the ICC profile
using the JPEGXL's internal representation for color profile, which is
encoded differently.
The decoder, while being far from complete is already a huge file. Let's
split it in multiple files. This commit is the first step toward this
goal.
No functional change.
This commit displays IPv6 addresses and netmasks of adapters if
present. Also adds a check to omit IPv4 addresses if e.g. a system
is running IPv6 only.
This commit introduces very naive IPv6 autoconfiguration by just
setting fe80::{mac address} as the adapters link local address every
time the link state comes up. Note: this is currently not compliant
with RFC4862 which mandates Duplicate Address Detection, which is
missing from this implementation.
Co-authored-by: famfo <famfo@famfo.xyz>
Since we take a socket address with an address
type, this allows us to support setting an IPv6
address using an IPv4 socket without a
particularly hacky API. This deviates from Linux's
behavior (see
https://www.man7.org/linux/man-pages/man7/netdevice.7.html
) where AF_INET6 uses a completely different
control structure, but this doesn't seem
necessary.
This requires changing the sockaddr size to fit
sockaddr_in6, as the network ioctl's are the only
place where sockaddr is used with a fixed size
(and not with variable size data like in POSIX
APIs, which would support sockaddr_in6 without
changes).
ifconfig takes a new parameter for setting the
IPv6 address of an interface. The IPv4 address
short option '-i' is removed, as it only yields
confusion (which IP version is the default? and
usually such options are called -4 or -6, if they
exist) and isn't necessary thanks to the brief
long option name.
This commit's main purpose for now is to allow
participating in IPv6 NDP and pings without
requiring SLAC.
Co-authored-by: Dominique Liberda <ja@sdomi.pl>
VariadicFormatParams only stores pointers to the parameters, so
the device.device_name() parameter will dangle.
This fixes broken dmesgln_pci output on riscv64 GCC.
I added this check in #18216 in commit 6d38824985.
Back then, I mentioned that `m_bit_codes` is only used for writing,
but only added reading support. `CanonicalCode::from_bytes()` sets
up both tables for reading and writing, so I needed the construction
of the writing tables to not crash. This check in
`CanonicalCode::write_symbol()` was dead code back then though.
Later, #24700 added support for writing WebP files, and it can create
canonical codes with more than 288 symbols. This works just fine, is
now under test, and this check in `write_symbol()` isn't needed
(and never was). So remove it again.
No behavior change.
(I saw this in the profiler once, so maybe a tiny speedup for
writing deflate-compressed data, but on the order of < 2%.)
Linux did the same thing 18 years ago and their reasons for the change
are similar to ours - https://github.com/torvalds/linux/commit/7d12e78
Most interrupt handlers (i.e. IRQ handlers) never used the register
state reference anywhere so there's simply no need of passing it around.
I didn't measure the performance boost but surely this change can't make
things worse anyway.
Instead, start by trying to read a buffer with size of Elf_Ehdr, and
check it for the shebang sign. If it's indeed an executable with shebang
then read again from the file, now with PAGE_SIZE size, which should
suffice for finding the interpreter path.
However, if the executable is an ELF, we quickly validate it and then
pass the preliminary buffer to the find_elf_interpreter_for_executable
method.
That method calculates the last byte offset which is needed to read all
of the program headers, so we don't just assume 4096 bytes is sufficient
anymore. The same pattern is applied when loading the interpreter ELF
main header and its program headers.
In Ext2FSInode::compute_block_list_impl(), each call to
process_block_array() creates a new ByteBuffer, which leads to a
kmalloc() call. The ByteBuffer is then discarded when
process_block_array() exits, leading to a kfree() call.
This leads to repeated kmalloc() and kfree() calls as ByteBuffers are
created and destroyed each time process_block_array() is called.
This commit makes it so that only 1 ByteBuffer is created for each level
of inode indirect block (so only 3 ByteBuffers are created at most).
These ByteBuffers are re-used on each call to process_block_array().
This reduces the number of kmalloc() and kfree() calls during
compute_block_list_impl(), especially for larger files.
For some reason, Clang wants AK to work with exceptions enabled so much
that it produces a very annoying warning complaining about the absence
of (completely useless in our setup) unhandled_exception method in
promise type for every coroutine declared. We work around this during
build by suppressing -Wcoroutine-missing-unhandled-exception in
Meta/CMake/common_compile_options.cmake. However, the flag is only added
if build is using Clang. If one builds coroutine code with GCC but still
uses clangd, clangd, obviously, doesn't pick up warning suppression and
annoys user with a squiggly yellow line under each coroutine function
declaration.
This PR implements the standard behavior of displaying the mailbox name
and parenthesized unseen message count in bold when the unseen message
count is greater than zero.
- Use TRY_OR_FAIL() instead of MUST() in a few places
- Use for-each loop in two tests
- Use StringView literals instead of u8 arrays in a few places
No behavior change.