Commit graph

30345 commits

Author SHA1 Message Date
Linus Groh cfecfbb214 js: Port to LibMain :^)
This wasn't particularly difficult, and there's not much use for the
nicer interface yet either. While unveil() is of limited use in js(1)
as it should be able to open arbitrary files, I feel like we should be
able to add a pledge() call.
2021-11-22 23:07:43 +01:00
Linus Groh ba0f89a4d1 Lagom: Add LibMain as a lagom_lib() 2021-11-22 23:07:43 +01:00
kleines Filmröllchen b14a64b3c8 Piano: Move to LibDSP's Classic synthesizer
Almost all synthesizer code in Piano is removed in favor of the LibDSP
reimplementation.

This causes some issues that mainly have to do with the way Piano
currently handles talking to LibDSP. Additionally, the sampler is gone
for now and will be reintroduced with future work.
2021-11-22 22:26:17 +01:00
kleines Filmröllchen 3ca059da2d LibDSP: Create Classic synth
The Classic synthesizer is a replication of Piano's old synthesizer
engine that is removed in the next commit.
2021-11-22 22:26:17 +01:00
kleines Filmröllchen 7663fbb19e LibDSP: Introduce ProcessorEnumParameter 2021-11-22 22:26:17 +01:00
kleines Filmröllchen cc9aab7462 LibDSP: Add Envelope abstraction
For the upcoming synthesizer, having an abstracted ADSR envelope concept
is highly desirable. Additionally, Envelope is mostly constexpr and
therefore super fast :^)
2021-11-22 22:26:17 +01:00
Lady Gegga a1093abe26 Base: Add Mro characters to font Katica Regular 10
16A40–16A6F https://www.unicode.org/charts/PDF/U16A40.pdf
2021-11-22 22:15:23 +01:00
Lady Gegga 2295e6ac67 Base: Add Symbols and Pictographs characters to font Katica Regular 10
1F3DC, 1F3DD, 1F4FA, 1F4F6, 1F4DC, 1F4A3, 1F4A4, 1F4A8, 1F4C8, 1F4C9,
1F4CA, 1F4CB, 1F4AF, 1F41F, 1F374, 1F3C1, 1F4BE, 1F500, 1F501, 1F503,
1F504, 1F508, 1F509, 1F50A
2021-11-22 22:15:23 +01:00
Lady Gegga 0b81eeed80 Base: Add Misc Supplemental Punctuation chrs to font Katica Regular 10
2E2E, 2E18, 2E55-2E58, 2E26, 2E27
2021-11-22 22:15:23 +01:00
Lady Gegga 8fcd804004 Base: Add General Punctuation characters to font Katica Regular 10
203D, 2047-2049, 2030(modified to look more like 0025), 204B, 2031
2021-11-22 22:15:23 +01:00
Ben Wiederhake afc456edd6 PixelPaint: Use better-fitting image size
This makes the default image fit perfectly into the default viewport,
which means the first fit_image_to_view call will end up with a scale of
exactly 1. This scale level has no visual artifacts, which is the more
intuitive 'default' behavior.

Fixes #10975.
2021-11-22 22:14:53 +01:00
Ben Wiederhake 177478dadf PixelPaint: Add interactive zoom ComboBox to toolbar
Before, there was nothing that tells the user the current zoom level,
which is unknown after a 'fit to image' (the initial state).
2021-11-22 22:14:53 +01:00
Ben Wiederhake 9013d0fe38 PixelPaint: Add ability to fit to either width, height, or image 2021-11-22 22:14:53 +01:00
Ben Wiederhake be697a440f PixelPaint: Allow setting ImageEditor scale and listening for changes 2021-11-22 22:14:53 +01:00
Ben Wiederhake 7f962cd9d3 PixelPaint: Floor effective viewport size to whole integers
We don't have fractional pixels available, so don't attempt to use them.
2021-11-22 22:14:53 +01:00
Pedro Pereira a436f0c668 LibMain: Rename .arguments to .strings :^)
Before this change, we would need to write arguments.arguments to access
the Span<>, which doesn't feel too pretty.
2021-11-22 22:13:22 +01:00
Tim Schumacher 75978d5fff tar: Support extracting symlinks
We can now extract GitHub's LLVM tarballs. :^)
2021-11-22 21:57:42 +01:00
Pedro Pereira a0c80a6f17 Minesweeper: Port to LibMain
Simplified two unveil() and two pledge() by using TRY().
2021-11-22 21:56:31 +01:00
Pedro Pereira 0ed3520ef5 Starfield: Port to LibMain
Simplified two pledge() by using TRY().
2021-11-22 21:56:20 +01:00
Pedro Pereira 272f7c340e 3DFileViewer: Port to LibMain
Simplified one pledge() and five unveil() by using TRY().
2021-11-22 21:56:04 +01:00
Andreas Kling 05e45bfdc5 Browser: Port to LibMain :^) 2021-11-22 19:47:14 +01:00
Andreas Kling f5927f167b nproc: Port to LibMain :^) 2021-11-22 19:43:26 +01:00
Andreas Kling 561e50108d w: Port to LibMain :^)
This unlocked a bunch of TRY() opportunities. Not just system calls, but
also Core::File::open() and JsonValue::from_string().
2021-11-22 19:40:27 +01:00
Andreas Kling e388782f60 Terminal: Port to LibMain :^)
This simplifies a bunch of error handling and makes the main function
quite a bit shorter.

It will become shorter yet, as we get better at propagating errors. :^)
2021-11-22 19:28:31 +01:00
Andreas Kling 3d34216b9a LibSystem: Add ErrorOr<T> wrapper for sigaction() :^) 2021-11-22 19:28:31 +01:00
Andreas Kling 843262497a id: Port to LibMain :^)
This is a first port of a simple program to LibMain. A bunch of code is
immediately simplified thanks to the LibSystem wrappers and ability to
use TRY(). This is pretty cool!
2021-11-22 19:28:31 +01:00
Andreas Kling 4e530135d5 AK+LibSystem+LibMain: Add Error::from_syscall() for syscall failures
This creates an error that contains the name of the syscall that failed.
This allows error handlers to print out the name of the call if they
want to. :^)
2021-11-22 19:28:31 +01:00
Andreas Kling d3cf68a540 LibMain: Add a new library for more ergonomic userspace entry functions
By linking with LibMain, your program no longer needs to provide main().
Instead, execution begins in this function:

    ErrorOr<int> serenity_main(Main::Arguments);

This allows programs that link with LibMain to use TRY() already in
their entry function, without having to do manual ErrorOr unwrapping.

This is very experimental, but it seems like a nice idea so let's try it
out. :^)
2021-11-22 19:28:31 +01:00
Andreas Kling 317ceb0ee2 LibSystem: Disable stack protector in syscall wrappers on i686
This is a hack to avoid a circular dependency issue with the stack check
failure handler being in LibC.

This is not ideal, and there's most likely a better way to solve this.

That said, LibSystem should not have anything but thin wrappers around
system calls, so stack protectors have limited utility here anyway.
2021-11-22 19:28:31 +01:00
Andreas Kling dc486fa3f9 LibSystem: Add pledge() and unveil() wrappers that return ErrorOr<void>
These will be more ergonomic to use together with TRY(). :^)
2021-11-22 18:34:08 +01:00
Tim Schumacher 0d679bf348 tar: Implement usage of prefixes when extracting 2021-11-22 09:03:47 +01:00
Tim Schumacher 07351762c7 AK: Add LexicalPath::prepend() 2021-11-22 09:03:47 +01:00
Karol Kosek 5f3e9886f7 HackStudio: Disable the Rename action on insufficient permissions
This patch will disable the Rename action in the project Tree View
if a user does not have write access to the selected file directory.
2021-11-22 09:03:19 +01:00
Karol Kosek 0264d3de45 HackStudio: Remove noop when deciding whether to disable delete action
The iterator in has_permissions will just be equal to sections.end()
when there are no selected files.
2021-11-22 09:03:19 +01:00
Andrew Kaster bf33a14081 AK: Mark MemMem header-only functions as inline rather than static
Avoid including a per-translation unit copy of all these functions.

Also, drive-by two clang-tidy fixes for readability-qualified-auto and
readability-implicit-bool-conversion.
2021-11-22 05:23:24 +03:30
davidot 0982a73d1d LibJS: Parse async generator functions 2021-11-21 21:46:39 +00:00
davidot 5d0f666f22 LibJS: Don't set a prototype property on async functions
This is now as defined in the spec. However since we execute async
functions in bytecode by transforming it to a generator function it must
have a prototype for the GeneratorObject. We check whether it is an
async function and in that case use the hardcoded generator object
prototype. This also ensures that user code cannot override this
property thus preventing exposing internal implementation details.
2021-11-21 21:46:39 +00:00
davidot de46a2cff1 LibJS: Parse async arrow functions 2021-11-21 21:46:39 +00:00
Linus Groh 0619c34703 LibJS: Implement Temporal.PlainDateTime.prototype.since() 2021-11-21 20:04:19 +00:00
Linus Groh 803eddbb62 LibJS: Implement Temporal.PlainDateTime.prototype.until() 2021-11-21 20:04:19 +00:00
Linus Groh aed444253c LibJS: Implement Temporal.PlainTime.prototype.since() 2021-11-21 20:04:19 +00:00
Linus Groh 2ac1774fd3 LibJS: Implement Temporal.PlainTime.prototype.until() 2021-11-21 20:04:19 +00:00
Andreas Kling f99af1bef0 Kernel: Make sure OpenFileDescription is kept alive while read() blocks
It's not safe to store OpenFileDescription in a raw pointer when
blocking, since another thread may decide to close the corresponding
file descriptor.
2021-11-21 20:22:48 +01:00
Andreas Kling 401c9415b4 LibC: Remove commented-out main() prototype from sys/cdefs.h 2021-11-21 20:22:48 +01:00
Andreas Kling c0deafe457 Kernel: Avoid repeated memory zeroing while generating coredumps
Reuse the same buffer-full-of-zeroes for every un-paged-in page that we
dump out.
2021-11-21 20:22:48 +01:00
Andreas Kling e1779b064a Kernel: Remove bogus TODO in coredump generation
When dumping the memory contents of a process, we should not page in
things from inodes that were not already paged in.
2021-11-21 20:22:48 +01:00
Andreas Kling f2c3a41a8f Kernel: Make UserOrKernelBuffer::for_user_buffer() return ErrorOr<T>
This simplifies EFAULT propagation with TRY(). :^)
2021-11-21 20:22:48 +01:00
Andreas Kling b820ae2828 Kernel: Share code between DoubleBuffer's read() and peek()
The only difference between these is whether the buffer index is
advanced after the read.
2021-11-21 20:22:48 +01:00
Andreas Kling 9387271049 Everywhere: Fix spelling of "offsetted"
This word is actually pretty awkward in context, but this patch merely
fixes the spelling instead of finding a better word.
2021-11-21 20:22:48 +01:00
Andreas Kling daef7e2c71 Kernel+LibC: Fix misspelled "VERTICAL" in framebuffer ioctls 2021-11-21 20:22:48 +01:00