This was breaking ports linting, which runs the script with the
'showproperty' option. This check is not needed for some other options
as well, so let's do it conditionally.
Some people apparently like to type in full absolute paths into the
filename box of GUI::FilePicker. So let's handle that as you'd expect
by using the full path as the selected path.
Simply by checking whether a built libc.so exists, we should be able to
avoid strange build errors where that's not the case and just tell the
user upfront.
Fixes#7309.
Previously, this code would create a bitmap with the size of the screen
resolution, draw the new wallpaper into it, and then scale it down for
display inside the MonitorWidget.
This was done on every paint event, which made the code quite slow and
allocation-happy.
Instead of this, we now scale down the new wallpaper to a miniature
of the same scale as the little MonitorWidget screen. The miniature is
then used for tiling, etc. The miniature is cached and reused across
paint events if nothing else changes.
An application that allows opening arbitrary files from the filesystem
needs to allow itself to access the filesystem, otherwise there's no
point in supporting the feature. :^)
And the "thread" pledge is needed for background thumbnail generation.
I introduced this bug in e95eb7a51, where it's possible that the
ProcessGroup is created, but we never add it to the list. Make sure we
check that we are in the list before removal. This only broke booting in
self-test mode oddly enough.
Reported-By: Andrew Kaster <andrewdkaster@gmail.com>
Removing the element from the intrusive linked list might not be safe
if doing so requires a lock. Instead this is something the caller
should have done so let's verify instead that we're not on any lists.
In cases with ambiguous captures involving pawns (where multiple pieces
could have made the capture), we were exporting invalid syntax for
the move:
`1. e4 e5 2. Bb5 c6 3. Bxc6 ddxc6`
Move 3 should be `Bxc6 dxc6`, but we were duplicating the d on the pawn
move.
Avoid allocating while holding the g_process_groups_lock spinlock, it's
a pattern that has a negative effect on performance and scalability,
especially given that it is a global lock, reachable by all processes.
Currently in SMP mode we hard code support for up to only 8 processors.
There is no reason for this to be a dynamic allocation that needs to be
guarded by a spinlock. Instead use a Array<T* with inline storage of 8,
allowing each processor to initialize it self in place, avoiding all
the need for locks.
Spinlocks guard short regions, with hopefully no other locks being taken
in the process. Violating constraints usually had detrimental effects on
platform stability as well as performance and scalability. Allocating
memory takes it own locks, and can in some cases even allocate new
regions, and thus violates these tenants.
Move the AnonymousVMObject creation outside of the spinlock as
creation does not modify any shared state.
We had rules for .png and .jpg files, but we have not maintained the
list as support for other file formats has been added. To test these
changes test files have been committed for each of these formats.
This change updates the list with all of the binary image file types I
was able to find in the tree at the time of writing.
The wild card rules at the top of the .gitignore came from a time when
the build wrote back to the git repository and placed files right next
to the source. (Original commit that introduced them 37c27e2e, they were
later consolidated into the root .gitignore in 802d4dc) We have since
moved to cmake, and these rules have become obsolete, and they just
cause issues where we need to go and add negations for these rules in
order for things to work.
A previous change attempted to remove the top wild card rules (PR #4565)
but it was later reverted, as they forgot to remove the top ignore
everything rule '*', so all files were ignored. This change just removes
all of these rules that no longer make sense, restoring a bit of sanity.
*.o,*.d,*.a rules were also from when the build wrote to the repository,
they are now defunct. The same goes for the *Endpoint.h and CMakeFiles
rules.
The lowercase build directory can be removed as we've standardized on
the uppercase 'Build' directory as the root of the build output dir.
Problem:
- Bitmasks are duplicated.
- Bitmasks are C-style arrays.
Solution:
- Move bitmasks to BitmapView.h.
- Change C-style arrays to be AK::Array for added safety.
This makes un-styled text readable when using a dark system theme,
previously such text would be black, regardless of the theme background
color.
Fixes#7274.