Age | Commit message (Collapse) | Author |
|
|
|
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.
|
|
|
|
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.
|
|
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.
|
|
|
|
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.
|
|
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.
|
|
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.
|
|
|
|
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.
|
|
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. :^)
|
|
The OS/2 table contains nice typographic ascent/descent information.
|
|
This was preventing us from loading JetBrains Mono Regular with LibTTF.
|
|
|
|
|
|
|
|
|
|
We're even downloading an additional older icon from the git repo
instead of using their current ones for accurate look and feel :^)
|
|
|
|
This is being used to generate the RunInTerminal entry in launcher app
files.
|
|
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.
|
|
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. :^)
|
|
|
|
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.
|
|
This copies the ELF header because we might end up overwriting when
loading the ELF sections.
|
|
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.
|
|
This applet displays a grid of desktops, and shows the user what virtual
desktop they are on. When clicked, the desktop will be changed.
|
|
Users can specify the row and column of the virtual desktop, and
WindowServer will animate to it.
|
|
callbacks for screen rect changes can be added with
on_receive_screen_rects()
|
|
This commit adds a check, to prevent empty dot or dot-dot filenames when
renaming a file and returns EINVAL in that case.
|
|
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.
|
|
|
|
This fixes an issue where the column widths of the AutocompleteBox did
not properly update after update_suggestions() was called.
|
|
|
|
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.
|
|
The serenity build target in config.sub did not match
'i686-pc-serenity'. This commit changes the build target from
'serenity*' to '*serenity*'.
|
|
|
|
Without the declaration of iswprint libarchive will not compile.
|
|
Previously the whole bar was repainted, there's no need to invalidate
past the last tab button.
|
|
No need to repaint if it's not scrollable, this saves a tiny bit of
repaint :)
|
|
This adds a simple page to showcase the justify-content CSS-property.
|
|
This patch implements the algorithm for placing flex-items on a line
according to the specified justify-content property.
|
|
|
|
This change adds missing file association for the following programs:
- ImageViewer
- PDFViewer
- PixelPaint
- Playground
- Profiler
- SoundPlayer
|
|
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.
|
|
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.
|
|
|
|
|
|
This was broken by recent changes.
|