Robin Burchell
c478503581
ArgsParser: Remove prefix from constructor
...
It makes sense to keep this consistent between applications, and the
purpose of the string is not immediately obvious from an API perspective.
If we need to make it configurable later, that can come from a setter.
2019-05-17 15:49:37 +02:00
Robin Burchell
729507f2bd
ArgsParser: Remove boolean trap on add_arg
...
Rather than requiring a boolean for whether or not the argument is
required, add some new methods to make the purpose of the bool explicit.
2019-05-17 15:49:37 +02:00
Robin Burchell
5cad215919
ArgsParser: Style fixup
...
Remove tabs, make whitespace lines a little more in fitting with the rest of the codebase.
2019-05-17 15:49:37 +02:00
Andreas Kling
cc5ee3bff4
Vector: Add insert() overload that takes a const T&.
2019-05-17 04:59:56 +02:00
Andreas Kling
01ffcdfa31
Kernel: Encapsulate the Region's COW map a bit better.
2019-05-14 17:31:57 +02:00
Andreas Kling
7198e35465
AK: InlineLRUCache was always filling up one short of capacity.
2019-05-14 15:33:21 +02:00
GuillaumeGas
801d6f572a
Feature/pidof ( #31 )
...
* Added killall command
* Fixed feedbacks of awesomekling
* Implemented pidof program and helper to parse arguments called ArgsParser.
* Fixed feedbacks in pidof implem.
Fixes #26
2019-05-13 14:31:23 +02:00
Andreas Kling
19eeaf807d
AK: Add InlineLinkedList::remove_tail().
2019-05-07 16:06:48 +02:00
Andreas Kling
cec16105cc
Make sure all GraphicsBitmap scanlines are 16-byte aligned.
...
This is a prerequisite for some optimizations.
2019-05-06 14:04:54 +02:00
Andreas Kling
fafdda8902
AK: Change HashTable and HashMap size/capacity to be ints.
2019-05-06 13:28:52 +02:00
Andreas Kling
71770e000b
GTextEditor: Add very basic automatic indentation.
...
This is off by default, but enabled by TextEditor. It simply inserts the
same number of leading spaces as the previous line when hitting Enter. :^)
2019-04-25 22:56:09 +02:00
Andreas Kling
44673c4f3b
Kernel: Add a write cache to DiskBackedFS.
...
This way you can spam small write()s on a file without the kernel writing
to disk every single time. Flushes are included in the FS::sync() operation
and will get triggered regularly by syncd. :^)
2019-04-25 22:05:53 +02:00
Andreas Kling
58240fdb33
Do a pass of compiler warning fixes.
...
This is really making me question not using 64-bit integers more.
2019-04-23 13:00:53 +02:00
Andreas Kling
2d7cad6a16
Kernel: Make sure we don't use any FPU/MMX/SSE instructions.
2019-04-22 23:38:33 +02:00
Andreas Kling
6693cfb26a
Kernel: Don't use MMX memcpy() in the kernel.
...
I just discovered the hard way that clobbering FPU/MMX/SSE registers in the
kernel makes things very confusing for userspace (and other kernel threads.)
Let's banish all of those things from the kernel to keep things simple.
2019-04-22 17:13:18 +02:00
Andreas Kling
ab94a6be00
AK: Add String::copy(BufferType) helper.
...
This will create a String from any BufferType that has data() and size().
2019-04-20 14:13:40 +02:00
Andreas Kling
7faf8fabf2
AK: Give Vector the ability to have an inline capacity.
...
This makes Vector malloc-free as long as you stay within the templated
inline capacity. :^)
2019-04-20 13:34:37 +02:00
Andreas Kling
6d4874cb2e
LibC: Get rid of the now-unneeded AK/kmalloc.cpp
2019-04-20 13:00:25 +02:00
Andreas Kling
301a269ca0
Get rid of SERENITY macro since the compiler already defines __serenity__
...
This makes it a bit easier to use AK templates out-of-tree.
2019-04-20 12:58:49 +02:00
Andreas Kling
09c087177c
Snake: Clear the movement queue on game reset.
2019-04-20 03:47:35 +02:00
Andreas Kling
b41e95b578
Snake: Use a queue for the movement inputs.
...
This makes it a lot less finicky to make rapid moves like staircasing and
sudden turns.
2019-04-20 03:44:56 +02:00
Andreas Kling
e001954193
AK: And one more RetainPtr::operator==() G++ complains about in LibGUI.
2019-04-19 21:36:11 +02:00
Andreas Kling
b985d0ec6e
AK: Add RetainPtr::operator==() overload G++ is whining about.
2019-04-19 21:34:47 +02:00
Andreas Kling
3a33b8ea08
VisualBuilder: Hook up everything needed for widget property editing.
...
It's now possible to edit widget properties inline in the properties window.
We're currently relying on the basic GVariant conversion functions to do
all the "parsing" but that's not gonna be good enough.
2019-04-19 01:05:59 +02:00
Andreas Kling
6f9df89c92
AK: MappedFile should open with O_CLOEXEC.
2019-04-18 22:19:42 +02:00
Andreas Kling
18ef6b111b
WindowServer: Mouse switching between system menu and app menu was broken.
2019-04-17 12:06:09 +02:00
Andreas Kling
d31b47b371
AK: Add Vector::prepend().
2019-04-16 03:47:24 +02:00
Andreas Kling
33920df299
AK: Try to use StringViews more for substrings and splitting.
2019-04-16 02:39:16 +02:00
Andreas Kling
30b0e5f82e
AK: Make StringBuilder::appendf() pre-allocate the format string length.
2019-04-15 23:56:35 +02:00
Andreas Kling
461aa550eb
AK: Add a StringView class.
2019-04-15 14:56:37 +02:00
Andreas Kling
bc5148354f
LibCore: Add a CConfigFile class, a simple INI file parser.
...
You open the configuration for an app like so:
auto config = CConfigFile::get_for_app("MyApp");
This will then open ~/MyApp.ini and parse it for you.
Immediately start using it in Minesweeper to load the field size and mine
count from a config file.
2019-04-15 02:23:20 +02:00
Andreas Kling
c2093ad994
WindowServer: Move the CPU monitor thingy to its own class.
2019-04-14 04:33:43 +02:00
Andreas Kling
3f6408919f
AK: Improve smart pointer ergonomics a bit.
2019-04-14 02:36:06 +02:00
Andreas Kling
2dbece54f5
AK: Add WeakPtr::operator T*() for ergonomy.
2019-04-14 02:15:43 +02:00
Andreas Kling
8feecf6c77
AK: Fix build.
2019-04-12 16:43:48 +02:00
Andreas Kling
8f4c59c276
GVariant: Don't crash when extracting a null String.
2019-04-12 14:43:44 +02:00
Andreas Kling
60a819c14a
Kernel: Yet more work on bringing up POSIX SHM.
2019-04-09 02:37:38 +02:00
Andreas Kling
f93b3b7806
AK: Improve StringImpl chomping a bit.
...
Chomp off any number of trailing [\0\n\r] characters and trim the allocation
to fit instead of keeping the original size.
2019-04-07 20:21:11 +02:00
Andreas Kling
51b4d3fe5a
GHttp: Work on bringing this up.
2019-04-07 19:35:48 +02:00
Andreas Kling
47d270b577
WindowServer: Factor out window frame logic into a WSWindowFrame class.
...
The window frame is an object that contains a window, its title bar and
window border. This way WSWindowManager doesn't have to know about all the
different types of window borders, titlebar rects, etc.
2019-04-05 15:54:56 +02:00
Andreas Kling
bcc00857a4
AK: Revert Eternal<T> for now since it doesn't work as intended.
2019-04-05 05:14:20 +02:00
Andreas Kling
9de7a0daaf
AK: Fix problem when building i686-pc-serenity toolchain from scratch.
2019-04-05 03:58:40 +02:00
Andreas Kling
c02c9880b6
AK: Add Eternal<T> and use it in various places.
...
This is useful for static locals that never need to be destroyed:
Thing& Thing::the()
{
static Eternal<Thing> the;
return the;
}
The object will be allocated in data segment memory and will never have
its destructor invoked.
2019-04-03 16:52:25 +02:00
Andreas Kling
c0009e3173
PNGLoader: Use MappedFile.
2019-04-03 14:15:35 +02:00
Andreas Kling
3dc3754cde
Font: Clean up AK::MappedFile and use it for mapping font files.
2019-04-03 13:51:49 +02:00
Andreas Kling
ab6bd3872b
AK: Remove unused TemporaryFile class.
2019-04-03 13:20:08 +02:00
Andreas Kling
ac46e45f6e
Kernel: Remove unneeded kassert.h.
2019-04-03 12:51:10 +02:00
Andreas Kling
beb9c970c9
AK: Remove useless ktime.h
2019-04-03 12:09:27 +02:00
Andreas Kling
60f236b285
AK: Clean up some of the confusion that is AK/kmalloc.{cpp,h}
2019-04-03 12:07:41 +02:00
Andreas Kling
17e02e7450
Move NetworkOrdered.h to AK/ since it's used in both kernel and userspace.
2019-04-02 20:04:54 +02:00
Andreas Kling
6673284b06
LibGUI: Switch to a resizing cursor when hovering or using a GSplitter.
...
Also expose the various standard cursors on WSWindowManager so they can
be reused by the override mechanism.
2019-04-02 02:34:09 +02:00
Andreas Kling
90b2723e7a
AK: Tweak CALLABLE_WHEN macro in Retained.
2019-03-31 22:11:13 +02:00
Andreas Kling
2c6a597d77
FileManager: Make the tree view follow the directory view navigations.
2019-03-30 03:27:25 +01:00
Andreas Kling
56f7b392c1
WindowServer: Move the CPU usage graph updates to a secondary thread.
...
This avoids blocking the main thread on filesystem access, which created
noticeable stutters during compilation.
2019-03-27 14:59:22 +01:00
Andreas Kling
23bb276fcd
LibC: Run constructors on process startup.
...
Cooperate with the compiler to generate and execute the _init_array list
of constructor functions on userspace program statup. This took two days
to get working, my goodness. :^)
2019-03-27 12:48:21 +01:00
Andreas Kling
e2a24e5746
AK: printf() should support %#x and %#o.
2019-03-27 01:29:07 +01:00
Andreas Kling
17b9fb7bfc
AK: HashMap::set() didn't save new values for existing keys.
2019-03-25 04:23:17 +01:00
Andreas Kling
86413a6f5a
LibGUI+FileManager: Add a GIcon class to support multi-size icons.
...
A GIcon can contain any number of bitmaps internally, and will give you
the best fitting icon when you call bitmap_for_size().
2019-03-24 04:28:36 +01:00
Andreas Kling
b6cd66c3b5
AK: Uh, okay, it seems like we need those 64-bit division helpers after all.
2019-03-24 01:19:51 +01:00
Andreas Kling
db6084538f
AK: Don't compile the 64-bit division helpers in userland builds.
2019-03-24 00:53:56 +01:00
Andreas Kling
60d25f0f4a
Kernel: Introduce threads, and refactor everything in support of it.
...
The scheduler now operates on threads, rather than on processes.
Each process has a main thread, and can have any number of additional
threads. The process exits when the main thread exits.
This patch doesn't actually spawn any additional threads, it merely
does all the plumbing needed to make it possible. :^)
2019-03-23 22:03:17 +01:00
Andreas Kling
5ca62f356b
FileManager: Open PNG files with QuickShow when activated.
2019-03-22 12:43:29 +01:00
Andreas Kling
23fe630057
AK: Allow printing a literal '%' character with the printf family.
2019-03-22 01:50:32 +01:00
Andreas Kling
c2a38c86cf
AK: Fix busted __udivmoddi4() implementation.
2019-03-21 17:33:06 +01:00
Andreas Kling
9dfcd95cd7
Use 64-bit integers inside Stopwatch to enable longer timings.
2019-03-21 13:41:36 +01:00
Andreas Kling
fe2fa4ac80
DNSLookupServer: Start working on a userspace DNS resolver.
...
This doesn't have any server functionality just yet, but it does post
decent-looking DNS queries and parse the responses.
2019-03-19 16:29:06 +01:00
Andreas Kling
43304d2adf
WindowServer: Add special treatment for modal windows.
...
While a WSClientConnection has a modal window showing, non-modal windows
belonging to that client are not sent any events.
2019-03-19 00:52:39 +01:00
Andreas Kling
214b67defd
AK: Add Vector::remove_first_matching(Callback).
...
This is a nice little helper to remove one item based on a matching
callback without having to do iteration yourself.
2019-03-18 20:51:40 +01:00
Andreas Kling
9ad076178a
GIODevice: Add a read_all() that returns a ByteBuffer with all we can read.
...
Use this to implement file opening in TextEditor.
2019-03-18 14:38:30 +01:00
Andreas Kling
ef05d8cbf6
AK: Use an OwnPtr for the VectorImpl.
...
I don't know why it wasn't implemented this way already. This fixes a leak
in operator=(Vector&&) that we were hitting on Ext2FS write.
2019-03-17 15:53:03 +01:00
Andreas Kling
1c6dfc3282
AK: Make ByteBuffer's copy() and wrap() take void*.
...
This way we don't have to cast whatever we're passing to copy()/wrap().
2019-03-17 00:36:41 +01:00
Andreas Kling
dd5ca1940a
AK: Hoist the assertion in Retainable::release() to RetainableBase.
...
This means we don't have to generate a __PRETTY_FUNCTION__ symbol there
for each and every specialization.
2019-03-16 13:48:56 +01:00
Andreas Kling
3ebb5fbb87
AK: Remove custom allocator feature from Vector.
...
This wasn't really used and generated a whole bunch of template bloat.
2019-03-16 13:24:39 +01:00
Andreas Kling
313ee8dd19
Move Lock from AK to Kernel, since it only works inside the kernel.
2019-03-16 13:18:22 +01:00
Andreas Kling
15657f0916
AK: Remove Buffer<T> since it was only ever instantiated with T=byte.
...
Instead make a specialized AK::ByteBufferImpl class for the backing store
of AK::ByteBuffer. This reduces template bloat.
2019-03-16 13:12:13 +01:00
Andreas Kling
955a0ff477
AK: Reduce template bloat by hoisting non-typed parts of Retainable.
...
This is a bit of an old school hack, but it does remove a whole bunch of
generated symbols.
2019-03-16 12:47:19 +01:00
Andreas Kling
f87dec1cbf
AK: Add CircularQueue::at().
2019-03-15 12:13:51 +01:00
Andreas Kling
209a16bb7f
IPv4: Dynamically allocate the UDP source port if needed.
2019-03-13 16:05:56 +01:00
Andreas Kling
60db082fdd
AK: Fix node leak in SinglyLinkedList::take_first().
2019-03-13 13:11:23 +01:00
Andreas Kling
87ecf290f4
Kernel: More work on the ICMP and IPv4 support.
2019-03-12 12:43:30 +01:00
Andreas Kling
90f60d2f65
Kernel: Cache MAC<->IP mappings (from ARP responses) seen on the wire.
2019-03-12 00:56:33 +01:00
Andreas Kling
35098cbde1
Kernel: Add a NetworkTask and a received network packet queue.
...
It will be easier to deal with incoming packets in a separate task.
2019-03-11 12:43:45 +01:00
Andreas Kling
0d5e6593b2
AK: Add a basic QuickSort template implementation.
...
It was depressing not being able to capture anything when passing a lambda
to qsort_r() so let's just have our own QuickSort. I was gonna have to do
this eventually anyway. :^)
2019-03-09 16:20:12 +01:00
Andreas Kling
46caa2663b
LibGUI: Use a separate data role for the table model sorting order.
...
This allows data to be displayed nicely while sorting happens based on some
underlying raw data. :^)
2019-03-09 14:24:34 +01:00
Andreas Kling
7d1142c7d9
Make it possible to sort a GTableModel by column+order.
...
This is accomplished by putting a GSortingProxyTableModel between the model
and the view. It's pretty simplistic but it works for this use case. :^)
2019-03-09 13:33:52 +01:00
Andreas Kling
48d48679b0
GTextEditor: Work on cut/copy/paste operations.
2019-03-08 14:08:15 +01:00
Andreas Kling
43d56b6f3a
GTextEditor: Support splitting lines at the cursor with the Return key.
2019-03-07 16:49:21 +01:00
Andreas Kling
8425ea971a
GTextEditor: Start working on editing, starting with inserting newlines.
2019-03-07 15:52:11 +01:00
Andreas Kling
75fabef57b
LibGUI: Add GVariant class and use it for table model data.
2019-02-28 16:20:29 +01:00
Andreas Kling
711e2b2651
AK: Accept any number of l's as printf format qualifiers.
...
This isn't entirely correct and will catch a bunch of things it's not
supposed to, but it works for now.
2019-02-27 08:39:19 +01:00
Andreas Kling
2fb3fa7f69
WindowServer: Add a simple CPU usage graph to the global menu bar.
...
This is pretty cute and helps me spot when something's chewing up CPU.
2019-02-26 02:17:25 +01:00
Andreas Kling
9624b54703
More moving towards using signed types.
...
I'm still feeling this out, but I am starting to like the general idea.
2019-02-25 22:06:55 +01:00
Andreas Kling
901b7d5d91
Fix a bunch of compiler warnings. Not all, but a lot.
2019-02-25 19:05:51 +01:00
Andreas Kling
15fb917f28
Convert more RetainPtr use to Retained.
2019-02-25 16:04:08 +01:00
Andreas Kling
2cfcbdc735
AK: Add Retained<T>, like RetainPtr, but never null.
...
Also use some Clang attribute wizardry to get a warning for use-after-move.
2019-02-25 12:43:52 +01:00
Andreas Kling
d7753c7c8d
Move over to building all of userspace with i686-pc-serenity-g++.
2019-02-22 14:45:14 +01:00
Andreas Kling
6788dcdb58
Start fixing things up to build with a proper cross-compiler.
2019-02-22 10:23:28 +01:00
Andreas Kling
3df4a902df
Ext2FS: Lock a lot. Go way overkill with locking for now.
2019-02-20 13:09:59 +01:00
Andreas Kling
809ffa56d7
Kernel: Reduce code duplication in exception handlers.
2019-02-20 12:28:41 +01:00
Andreas Kling
e74c833af3
AK: Fix broken instrumentation code for StringImpl.
2019-02-17 10:35:48 +01:00