summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-07-20Kernel: Disable big process lock in sys$gethostname() sys$sethostname()Brian Gianforcaro
2021-07-20Kernel: Annotate all syscalls with VERIFY_PROCESS_BIG_LOCK_ACQUIREDBrian Gianforcaro
Before we start disabling acquisition of the big process lock for specific syscalls, make sure to document and assert that all the lock is held during all syscalls.
2021-07-20Kernel: Conditionally acquire the big lock based on syscall metadataBrian Gianforcaro
2021-07-20Kernel: Allow MutexLocker to be conditionally initializedBrian Gianforcaro
There are cases where we want to conditionally take a lock, but still would like to use an RAII type to make sure we don't leak the lock. This was previously impossible to do with `MutexLocker` due to it's design. This commit tweaks the design to allow the object to be initialized to an "empty" state without a lock associated, so it does nothing, and then later a lock can be "attached" to the locker. I realized that the get_lock() API's where also unused, and would no longer make sense for empty locks, so they were removed.
2021-07-20Kernel: Move validate_syscall_preconditions outside of the big lockBrian Gianforcaro
Now that we hold the space lock for the duration of the validation it should be safe to move the validation outside the big lock.
2021-07-20Kernel: Mark read only RegisterState function parameters as constBrian Gianforcaro
2021-07-20Kernel: Move syscall precondition validates to MMBrian Gianforcaro
Move these to MM to simplify the flow of the syscall handler. While here, also make sure we hold the process space lock for the duration of the validation to avoid potential issues where another thread attempts to modify the process space during the validation. This will allow us to move the validation out of the big process lock scope in a future change. Additionally utilize the new no_lock variants of functions to avoid unnecessary recursive process space spinlock acquisitions.
2021-07-20Kernel: Instrument syscalls with their process big lock requirementsBrian Gianforcaro
Currently all syscalls run under the Process:m_big_lock, which is an obvious bottleneck. Long term we would like to remove the big lock and replace it with the required fine grained locking. To facilitate this goal we need a way of gradually decomposing the big lock into the all of the required fine grained locks. This commit introduces instrumentation to the syscall table, allowing the big lock requirement to be toggled on/off per syscall. Eventually when we are finished, no syscall will required the big lock, and we'll be able to remove all of this instrumentation.
2021-07-20Kernel: No lock validate_user_stack variant, switch to Space as argumentBrian Gianforcaro
The entire process is not needed, just require the user to pass in the Space. Also provide no_lock variant to use when you already have the VM/Space lock acquired, to avoid unnecessary recursive spinlock acquisitions.
2021-07-20Taskbar: Update the start button width when system fonts changeAndreas Kling
2021-07-20LibTTF+LibGfx: Make Gfx::Font::bold_variant() work for TTF fontsAndreas Kling
There's no need for this to be a virtual, it's just a font database lookup and can be done in the Font base class.
2021-07-20LibTTF+LibGfx: Improve vertical alignment of glyphsAndreas Kling
Before this patch, some glyphs had a weird off-by-1 vertical position which looked really jarring at small font sizes. This was caused by glyph bitmaps having different heights from each other. (Each glyph bitmap was minimally sized to fit only the glyph itself, and then vertically positioned during the paint phase. Since this vertical positioning was integer based, subpixel precision was lost and things ended up looking wonky.) Fix this by making all glyph bitmaps be the same height so we can blit them at the same integer y position. We use the typographic ascent from the OS/2 table to transform the glyph coordinates. The end result is a huge improvement visually. :^)
2021-07-20LibTTF: Parse OS/2 tablesAndreas Kling
The OS/2 table contains nice typographic ascent/descent information.
2021-07-20LibTTF: Don't choke on fonts with CompositeGlyfFlags::UseMyMetricsAndreas Kling
This was preventing us from loading JetBrains Mono Regular with LibTTF.
2021-07-20LibTTF: Minor const correctness fix in TTF rasterizerAndreas Kling
2021-07-20LibTTF: Propagate glyph bitmap allocation failure in rasterizerAndreas Kling
2021-07-20LibTTF: Rename "raster" => "rasterize"Andreas Kling
2021-07-20LibTTF: Convert code to east-const styleAndreas Kling
2021-07-20Ports: Add a launcher for PythonLinus Groh
We're even downloading an additional older icon from the git repo instead of using their current ones for accurate look and feel :^)
2021-07-20Ports: Use "launcher_run_in_terminal=true" instead of "Terminal -e ..."Linus Groh
2021-07-20Ports: Add launcher_run_in_terminal package.sh variableLinus Groh
This is being used to generate the RunInTerminal entry in launcher app files.
2021-07-20Taskbar: Launch apps in Terminal when RunInTerminal=true is specifiedLinus Groh
This feels a bit awkward right now, and needs code duplication - I think adding a mechanism to the AppFile class to run the executable would be neat, especially if we add an arguments field to app files - but this will do for now.
2021-07-20LibDesktop: Add a RunInTerminal boolean field to app filesLinus Groh
This is common enough to warrant its own setting by now - but it's also partially a workaround. Since app files currently only support a single executable path with no arguments, we resort to generating wrapper scripts for port launchers with arguments - and then the executable is that shell script. We also moved from manually specifying icon files to embedding them in executables. As shell scripts can't have icons embedded in them, a different solution is needed - this one solves the common case of running a CLI program in a terminal, and still allows embedding of icons in the executable itself as no shell script is needed, meaning it will be shown in the taskbar and system menu. The second use case of actually passing arguments to the executable itself (and not just "Terminal -e ...") is not covered by this and still requires an external script (meaning no icon for now), but I think that can easily be solved by adding something like an "Arguments" field to app files. :^)
2021-07-20Help: Add check for pushing current page to historyroepfeli
2021-07-20Pong: Disable resizing the windowKarol Kosek
The game doesn't handle resize events. It's a pretty lazy fix. The proper way would be to actually allow the game to be resized, with some scaling trickery, but most games here don't do that anyway, so I guess that's good enough.
2021-07-20Prekernel: Make sure we're not overwriting the ELF headerGunnar Beutner
This copies the ELF header because we might end up overwriting when loading the ELF sections.
2021-07-19Revert "Profiler: Configure the TimelineContainer to be shrink to fit"Brian Gianforcaro
This reverts commit cfef3040fb00127552158f233ebe4705bf242c25. It looks like although this does improve things, it also degrades the experience and messes with the usability, especially for large amounts of processes. Need to come back to this with a more holistic fix.
2021-07-19Applets: Add DesktopPicker appletPeter Elliott
This applet displays a grid of desktops, and shows the user what virtual desktop they are on. When clicked, the desktop will be changed.
2021-07-19WindowServer: Add set_virtual_dekstop WindowManager messagePeter Elliott
Users can specify the row and column of the virtual desktop, and WindowServer will animate to it.
2021-07-19LibGUI: Add callback for screen rect change to Desktop.hPeter Elliott
callbacks for screen rect changes can be added with on_receive_screen_rects()
2021-07-19VirtualFileSystem: Check for '.' '..' and empty filenamesls
This commit adds a check, to prevent empty dot or dot-dot filenames when renaming a file and returns EINVAL in that case.
2021-07-19File Manager: Differentiate between navigation and rename errorsls
Adds a new on_rename_error handler and renames the old on_error handler to on_directory_change_error in FileSystemModel. The on_rename_error handler creates a MessageDialog with the error message.
2021-07-19Assistant: Trim terminal command before displaying or running itLuK1337
2021-07-19LibGUI: Call did_update() from AutocompleteSuggestionModel::update()Itamar
This fixes an issue where the column widths of the AutocompleteBox did not properly update after update_suggestions() was called.
2021-07-19LibGUI: Remove column width limitation in AutocompleteProviderItamar
2021-07-19Prekernel: Make sure the last few bytes of the kernel image are mappedGunnar Beutner
Depending on the exact layout of the .ksyms section the kernel would fail to boot because the kernel_load_end variable didn't account for the section's size.
2021-07-19Ports/dosbox-staging: Change 'serenity*' build target to '*serenity*'Kenneth Myhra
The serenity build target in config.sub did not match 'i686-pc-serenity'. This commit changes the build target from 'serenity*' to '*serenity*'.
2021-07-19Ports: Bump libarchive from version 3.4.0 to 3.5.1Kenneth Myhra
2021-07-19LibC: Add stub for iswprintKenneth Myhra
Without the declaration of iswprint libarchive will not compile.
2021-07-19LibGUI: Tighten invalidation rect for TabWidgetMarcus Nilsson
Previously the whole bar was repainted, there's no need to invalidate past the last tab button.
2021-07-19LibGUI: Don't invalidate scrollbar rect if disabledMarcus Nilsson
No need to repaint if it's not scrollable, this saves a tiny bit of repaint :)
2021-07-19Base: Add a test page for the 'justify-content' CSS propertyTobias Christiansen
This adds a simple page to showcase the justify-content CSS-property.
2021-07-19LibWeb: Implement justify-content for the FlexFormattingContextTobias Christiansen
This patch implements the algorithm for placing flex-items on a line according to the specified justify-content property.
2021-07-19LibWeb: Add parsing for the justify-content propertyTobias Christiansen
2021-07-19Base: Add file associations for multiple programsLuK1337
This change adds missing file association for the following programs: - ImageViewer - PDFViewer - PixelPaint - Playground - Profiler - SoundPlayer
2021-07-19Everywhere: Use AK/Math.h if applicableHendiadyoin1
AK's version should see better inlining behaviors, than the LibM one. We avoid mixed usage for now though. Also clean up some stale math includes and improper floatingpoint usage.
2021-07-19AK: Introduce Math.hHendiadyoin1
This is to implement constexpr template based implementations for mathematical functions This also changes math.cpp to use these implementations. Also adds a fastpath for floating point trucation for values smaller than the signed 64 bit limit.
2021-07-19Kernel: Remove obsolete codeGunnar Beutner
2021-07-19Kernel: Simplify the linker script for the prekernelGunnar Beutner
2021-07-19Kernel: Make sure super pages are in the first 16MiB of physical memoryGunnar Beutner
This was broken by recent changes.