Commit graph

7199 commits

Author SHA1 Message Date
William McPherson
b1ed57e84b WavLoader: Add missing AK/OwnPtr.h include 2020-02-27 10:21:13 +01:00
William McPherson
121e7306c3 AK: Expose SinglyLinkedListIterator constructor
This commit replaces SinglyLinkedListIterator::universal_end() with an
empty SinglyLinkedListIterator(). Piano needs this in order to
initialize a member array of iterators without 84 lines of
universal_end().
2020-02-27 10:21:13 +01:00
Cristian-Bogdan SIRB
05ce8586ea Kernel: Fix ASSERTION failed in join_thread syscall
set_interrupted_by_death was never called whenever a thread that had
a joiner died, so the joiner remained with the joinee pointer there,
resulting in an assertion fail in JoinBlocker: m_joinee pointed to
a freed task, filled with garbage.

Thread::current->m_joinee may not be valid after the unblock

Properly return the joinee exit value to the joiner thread.
2020-02-27 10:09:44 +01:00
Andreas Kling
d28fa89346 Kernel: Don't assert on sys$kill() with pid=INT32_MIN
On 32-bit platforms, INT32_MIN == -INT32_MIN, so we can't expect this
to always work:

    if (pid < 0)
        positive_pid = -pid; // may still be negative!

This happens because the -INT32_MIN expression becomes a long and is
then truncated back to an int.

Fixes #1312.
2020-02-27 10:02:04 +01:00
Valtteri Koskivuori
22259bf85d Ports: Update the C-ray renderer port 2020-02-27 09:53:36 +01:00
Tibor Nagy
712e7102b0 DisplayProperties: Do not assert on trying to select unset wallpaper
When wallpapers are not present in WindowServer.ini, don't try
to select them in the wallpapers list.
2020-02-27 09:53:11 +01:00
Andreas Kling
4e394862ce Kernel: Disallow assigning a TTY to an arbitrary process group ID
It was possible to send signals to processes that you were normally not
allowed to send signals to, by calling ioctl(tty, TIOCSPGRP, targetpid)
and then generating one of the TTY-related signals on the calling
process's TTY (e.g by pressing ^C, ^Z, etc.)
2020-02-26 21:33:14 +01:00
Andreas Kling
d5fe839166 Kernel: Remove unused artifacts of the Custody cache
We'll probably want some kind of Custody caching in the future, but as
it's not used at the moment, let's simplify things a bit.
2020-02-26 15:25:53 +01:00
Andreas Kling
987dbedf4a Kernel: Sanitize memory coming in/out of the slab allocator
We were using SANITIZE_KMALLOC which was never defined in this .cpp
file, oops. Now we actually scrub on slab_alloc() and slab_dealloc().
2020-02-26 15:25:53 +01:00
howar6hill
a57f074187 CircularQueue: Move construct a T object instead of copy constructing it 2020-02-26 15:22:45 +01:00
Cristian-Bogdan SIRB
717cd5015e Kernel: Allow process with multiple threads to call exec and exit
This allows a process wich has more than 1 thread to call exec, even
from a thread. This kills all the other threads, but it won't wait for
them to finish, just makes sure that they are not in a running/runable
state.

In the case where a thread does exec, the new program PID will be the
thread TID, to keep the PID == TID in the new process.

This introduces a new function inside the Process class,
kill_threads_except_self which is called on exit() too (exit with
multiple threads wasn't properly working either).

Inside the Lock class, there is the need for a new function,
clear_waiters, which removes all the waiters from the
Process::big_lock. This is needed since after a exit/exec, there should
be no other threads waiting for this lock, the threads should be simply
killed. Only queued threads should wait for this lock at this point,
since blocked threads are handled in set_should_die.
2020-02-26 13:06:40 +01:00
Jesse Buhagiar
9fcb37ad30 Meta: Claim copyright on DisplayProperties files
If anyone's machine blows up setting their wallpaper, they know to blame
me and not AK :P
2020-02-26 12:15:54 +01:00
Jesse Buhagiar
22cdf12ec4 LibCore: Allow ConfigFile::read_num_entry to handle negative numbers
Previously, this function was using `AK::String::to_uint()`, which is
wrong considering the function returns type `int`. This also means that
configuration files would revert to the default value on negative
values.
2020-02-26 11:48:53 +01:00
Jesse
d879102549
Minesweeper: Perform sanity check on configuration (#1300)
This addresses the issue found in #1261. Previously we weren't doing
any form of sanity checking on the values in the configuration file,
meaning that a user could input a ridiculous number of mines such that
the number of mines is larger than the number of squares on the field.
2020-02-26 11:32:47 +01:00
howar6hill
35024154cc DateTime: Fix a typo 2020-02-26 09:31:43 +01:00
Andreas Kling
ac53af6b7b LibGUI: Mouse events didn't hit table headers when vertically scrolled
Only take the horizontal scroll into account when hit testing the
table view headers.
2020-02-25 23:06:40 +01:00
Andreas Kling
4f99c3726c SystemMonitor: Add pagemap visualization for VM regions
This patch adds a new column to the per-process memory regions view in
SystemMonitor. It's a scaled view of the underlying pagemap of a region
that tells you which chunks of the region are resident/null/zero.
2020-02-25 23:06:40 +01:00
Andreas Kling
7f9a86b495 ProcFS: Expose the physical page map of each region in /proc/PID/vm
You can now see the state of each underlying physical page slot in a
VM region.
2020-02-25 23:06:40 +01:00
Valtteri Koskivuori
24b5fd4c4c LibM: Implement floating point variants of various math functions 2020-02-25 20:48:42 +01:00
Tibor Nagy
3b8713a9df Terminal: Open settings as a modal window
To prevent the settings window from getting orphaned when someone
closes the main window behind it.
2020-02-25 19:57:48 +01:00
Tibor Nagy
6a892ea3a2 Snake: Persist high score 2020-02-25 19:57:20 +01:00
joshua stein
0d2bfe5c65 Build: Only look at SUBDIRS with Makefiles
If a directory is renamed or deleted before 'make clean', git will
delete the Makefile but leave all of the object and dependency files
around.  When make would try to recurse into that directory from the
wildcard, it would error out since there is no Makefile.
2020-02-25 19:56:48 +01:00
joshua stein
a17e702eba Terminal: Don't set an initial command_to_execute
Otherwise we end up executing "/bin/Shell -c /bin/Shell" on a normal
launch.  With a null command_to_execute, we'll just execute
/bin/Shell
2020-02-25 16:17:43 +01:00
Andreas Kling
559a99c104 Shell: Don't pass nonsense options to waitpid()
I had these options confused with the options for waitid()
2020-02-25 16:08:44 +01:00
Andreas Kling
423c48b355 LibGUI: Fix ColumnsView.cpp build 2020-02-25 16:05:00 +01:00
DAlperin
8e1645423f
LibGUI: Make descendants of AbstractView define their own select_all() (#1201)
AbstractView does not know which column it's displaying which makes it
impossible to implement the select_all functionality up there. Now
descendants override the pure virtual select_all method and implement
it themselves.
2020-02-25 16:03:15 +01:00
Andreas Kling
6824cb17a6 AK: Have AK/kmalloc.h #include <new> on other platforms
This should make stuff like placement new work correctly when building
outside of Serenity. This stuff is a bit delicate due to the weirdly
staged toolchain build at the moment. Hopefully we can unify this stuff
in the future.
2020-02-25 15:58:24 +01:00
Andreas Kling
00e744c263 AK: Provide a ptr_hash(const void*) overload 2020-02-25 15:37:07 +01:00
joshua stein
61340c12d6 SoundPlayer: Cast Audio::Sample to float for fabsf() 2020-02-25 15:32:58 +01:00
joshua stein
7e6ac544f7 AK: Add ptr_hash to use int_hash or u64_hash depending on pointer size 2020-02-25 15:32:58 +01:00
joshua stein
32e6453b0b LibGfx: SystemTheme is a struct, not a class
SystemTheme.h:81:1: error: 'SystemTheme' defined as a struct here but previously declared as a class; this is valid, but may result in linker errors under the Microsoft C++ ABI
2020-02-25 15:32:58 +01:00
Andreas Kling
960cae924a AK: Some more int => size_t in Bitmap 2020-02-25 15:11:15 +01:00
Andreas Kling
fbe4081f4b AK: Make Queue use size_t for its size 2020-02-25 14:55:04 +01:00
Andreas Kling
ceec1a7d38 AK: Make Vector use size_t for its size and capacity 2020-02-25 14:52:35 +01:00
Andreas Kling
9c6f7d3e7d LibGUI: Actually store the column in MultiView::set_model_column()
We were only forwarding the value to the subviews, but not storing it
in m_model_column. This would cause MultiView::model_column() to return
the wrong value.

Thanks to Daniel Bos for spotting this! :^)
2020-02-25 10:47:30 +01:00
Emanuel Sprung
074d935c6e AK, LibGfx, LibGUI: Initialize various variables to zero.
The not initialized variables can lead to compiler warnings that
become errors with the -Werror flag.
2020-02-25 10:18:46 +01:00
Sergey Bugaev
cbf2881bf7 LibThread: Fix destroying background actions
In the old model, before bc319d9e88, the parent
(the background thread) would delete us when it exits (i.e. never), so we had to
keep track of our own refcount in order to destroy ourselves when we're done.

With bc319d9e88, the parent keeps additional
reference to us, so:
* There should be no need to explicitly ref() ourselves
* The unref() would not get rid of the last reference to us anymore

The latter is why all the BackgroundAction's were getting leaked. Fix this by
simply unparenting ourselves from the background thread when we're done.
2020-02-25 10:17:31 +01:00
Andreas Kling
ab9a0780e3 LibGUI: Show the columns view action in the toolbar (but disable it)
We'll enable it once ColumnsView is less crashy. :^)
2020-02-24 21:23:00 +01:00
Andreas Kling
90c4e6b000 LibThread: Post the completion callbacks to the *current* event loop
FilePicker was not showing thumbnails correctly because once each
thumbnail rendering BackgroundAction completed, it posted a deferred
invocation event to the *main* event loop.

Since FilePicker runs in a nested event loop, those completion
callbacks never ran until it was too late and the FilePicker was gone.
2020-02-24 21:18:35 +01:00
Andreas Kling
2ad405c789 LibGUI: Complain in SortingProxyModel::data() if map_to_target() fails
There is some sort of issue with using a SortingProxyModel together
with ColumnsView. This is a workaround to allow FilePicker to use a
MultiView for now, but this needs to be fixed separately somehow.
2020-02-24 20:54:27 +01:00
Andreas Kling
a5d7ea24e9 LibGUI: Use MultiView in FilePicker
This allows the user to switch between different view modes.

Fixes #1283.
2020-02-24 20:50:21 +01:00
Andreas Kling
1b2b35cc40 LibGUI: Add a MultiView widget, based on FileManager's "DirectoryView"
A MultiView is a combination of ItemView, TableView and ColumnsView
smashed into a single widget. You can switch between the view modes
by calling MultiView::set_view_mode().

Note that MultiView inherits from StackWidget, not AbstractView.
That's purely for practical reasons, although I'm not entirely sure
if there would be some benefit to having it inherit from AbstractView.
2020-02-24 20:48:42 +01:00
Andreas Kling
bc64f8c502 LibGUI: Make AbstractView::set_model() take a RefPtr<Model>
Let's face it: Taking RefPtr<T>&& arguments is obnoxious and puts too
much unnecessary burden on the caller.
2020-02-24 20:47:16 +01:00
Andreas Kling
ee3811dee8 TextEditor: Pledge "thread" since it's needed by GUI::FilePicker
This is a little bit awkward since it's only used for generating
thumbnails on a background thread and it's not like I care about
thumbnails very much in a text editor, but for now let's just pledge
"thread" so I can get on with the thing I wanted to get on with.
2020-02-24 19:51:22 +01:00
Andreas Kling
ab6f694905 WindowServer+LibGUI: Allow changing a window's base size and increment
Previously it was only possible to change these window attributes when
creating a new window. This patch adds an IPC message that allows you
to change them at runtime.
2020-02-24 19:23:57 +01:00
Andreas Kling
d0f5b43c2e Kernel: Use Vector::unstable_remove() when deallocating a region
Process::m_regions is not sorted, so we can use unstable_remove()
to avoid shifting the vector contents. :^)
2020-02-24 18:34:49 +01:00
Andreas Kling
f59747a3d8 Kernel: Fix some formatting goofs in Process.h 2020-02-24 16:17:03 +01:00
Tibor Nagy
0086daf9b0 LibGUI: Scroll selected treeview entries into view 2020-02-24 15:12:47 +01:00
Andreas Kling
cb9d9846e0 Kernel: Fail with ENOMEM if there's insufficient VM for a SharedBuffer 2020-02-24 13:33:10 +01:00
Andreas Kling
30a8991dbf Kernel: Make Region weakable and use WeakPtr<Region> instead of Region*
This turns use-after-free bugs into null pointer dereferences instead.
2020-02-24 13:32:45 +01:00