Andreas Kling
243e1d8462
Kernel: Use rep insw/outsw for IDE transfers.
...
There are much faster ways to do disk transfers, but I'm not implementing
those today. In the meantime, this is slightly nicer. :^)
2019-04-23 03:45:55 +02:00
Andreas Kling
37498c1566
Kernel: Send IDE flush command after writing sectors.
2019-04-23 03:16:47 +02:00
Andreas Kling
11e7ce60e5
Kernel: Use IDE LBA addressing instead of the long-obsolete C/H/S.
2019-04-23 02:26:51 +02:00
Andreas Kling
62f7e8ac62
WindowServer: WSButton should be more discerning with MouseUp/MouseMove.
2019-04-23 01:17:20 +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
5c68929aa1
Kernel: Add a systrace() syscall and implement /bin/strace using it.
...
Calling systrace(pid) gives you a file descriptor with a stream of the
syscalls made by a peer process. The process must be owned by the same
UID who calls systrace(). :^)
2019-04-22 18:44:45 +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
1d02c7b6f1
LibC: Return a default locale from localeconv(). (For GCC 8.3.0)
2019-04-22 13:00:59 +02:00
Andreas Kling
9f122bff5a
WindowServer+LibGUI: Allow arbitrary number of rects in messages.
...
To get truly atomic updates, add a mechanism for passing arbitrary amounts
of extra data along with WindowServer messages. This allows us to pass all
the rects in a single message.
2019-04-22 01:15:47 +02:00
Andreas Kling
f9d3abf5d0
LibC: Add sched_yield(), needed for GCC 8.3.0 build.
2019-04-22 00:13:41 +02:00
Andreas Kling
a9d09e9020
Kernel: Get rid of the "cool globals" thingy.
...
This was something I used while debugging with Computron. I haven't needed
it for months, so let's get rid of it. It's trivial to readd if needed.
2019-04-21 12:33:14 +02:00
Andreas Kling
84f96c393c
WindowServer: Limit paint request rects to the visible window rect.
...
Don't send unnecessarily large paint requests to clients. This avoids some
unnecessary work and fixes choppiness when dragging widgets outside the
visible part of a VisualBuilder form.
2019-04-21 04:20:29 +02:00
Andreas Kling
b3f7f5436a
Snake+Minesweeper: Exit process when game window is closed.
2019-04-21 04:11:29 +02:00
Andreas Kling
57da00b731
Include Makefile.common in all other Makefiles.
2019-04-21 04:09:39 +02:00
Andreas Kling
74b94da6fa
Add a Makefile.common with stuff shared by all Makefiles.
...
Compiler names, CXXFLAGS, and such. I should have done this ages ago.
2019-04-21 04:06:31 +02:00
Andreas Kling
5451178c63
LibC: Minor compat tweak, move struct timezone to sys/time.h
2019-04-21 02:59:20 +02:00
Andreas Kling
5c5ce4f885
LibGUI: Allow GActions to be scoped either globally or widget-locally.
...
This makes it possible for e.g GTextEditor to create a bunch of actions
with popular shortcuts like Ctrl+C, etc, without polluting the global
shortcut namespace. Widget-local actions will only activate while their
corresponding widget has focus. :^)
2019-04-20 21:56:56 +02:00
Andreas Kling
a56e1afb64
Snake: Show the highest score achieved so far (in this session.)
2019-04-20 21:24:38 +02:00
Andreas Kling
0dcb7a234e
LibGUI+Minesweeper: Add GWindow::set_resizable().
2019-04-20 21:24:02 +02:00
Andreas Kling
a0633c298b
Snake: Add a window icon. :^)
2019-04-20 20:14:02 +02:00
Andreas Kling
ca9a430965
Snake: Disable double-buffering for the game window.
...
There's no need to use automatic double-buffering here since we manage the
backing store manually.
2019-04-20 19:51:10 +02:00
Andreas Kling
180de7e8c5
ProcessManager: Exclude colonel process from process listing.
2019-04-20 19:41:57 +02:00
Andreas Kling
de913529d7
GTableView: Tweak appearance of key column with alternating rows.
2019-04-20 19:41:37 +02:00
Andreas Kling
5f63f8120c
Kernel: Remove "restorer" field from SignalActionData.
...
I was originally implementing signals by looking at some man page about
sigaction() to see how it works. It seems like the restorer thingy is
system-specific and not required by POSIX, so let's get rid of it.
2019-04-20 19:32:14 +02:00
Andreas Kling
5562ab3f5a
Kernel: Remove some more unnecessary Thread members.
2019-04-20 19:29:48 +02:00
Andreas Kling
b2ebf6c798
Kernel: Shrink Thread by making kernel resume TSS heap-allocated.
2019-04-20 19:23:45 +02:00
Andreas Kling
c9b86be1cc
Snake: Add some more fruit types.
2019-04-20 18:50:41 +02:00
Andreas Kling
4619019481
Snake: Tweak game speed so it's not too easy.
2019-04-20 17:46:59 +02:00
Andreas Kling
7234900f61
WindowServer+LibGUI: Coalesce multiple client paints into GMultiPaintEvents.
...
This allows GWindow to paint up to 32 separate rects before telling the
WindowServer to flip the buffers. Quite a bit smoother. :^)
2019-04-20 17:38:51 +02:00
Andreas Kling
7efd61fcf5
WindowSerer+LibGUI: Send multiple rects in invalidation/flush messages.
...
This patch moves to sending up to 32 rects at a time when coordinating the
painting between WindowServer and its clients. Rects are also merged into
a minimal DisjointRectSet on the server side before painting.
Interactive resize looks a lot better after this change, since we can
usually do all the repainting needed in one go.
2019-04-20 17:23:35 +02:00
Andreas Kling
ec365b82d5
Kernel: Make the colonel run at "Idle" priority (the lowest possible.)
...
This means it won't hog the CPU for more than a single timeslice. :^)
2019-04-20 15:58:45 +02:00
Andreas Kling
45a30b4dfa
LibGUI: Bundle up update() invalidations and send them on next event loop.
2019-04-20 15:19:02 +02:00
Andreas Kling
79573ce7e6
Snake: Try to only repaint the parts that actually changed between ticks.
2019-04-20 15:04:34 +02:00
Andreas Kling
2d736d5591
Meta: Remove convert-raw-to-rgb thingy since we have PNG support nowadays.
2019-04-20 14:44:46 +02:00
Andreas Kling
dbf5a7e4a6
Meta: Update build instructions to build GCC with --with-newlib.
2019-04-20 14:42:31 +02:00
Andreas Kling
49e7ffc06a
WindowServer: Introduce a WM event mask so Taskbar can ignore window rects.
...
Taskbar was waking up to do nothing every time a window rect changed.
2019-04-20 14:40:59 +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
5eedb22834
Sprinkle use of AK::Vector in various places.
...
Some of these are less helpful than others. Avoiding a bunch of mallocs
in the event loop wakeup code is definitely nice.
2019-04-20 14:02:19 +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
6aead8998a
WindowServer: Fix minor header dependency issue.
2019-04-20 12:49:11 +02:00
Andreas Kling
405fe4f72c
LibCore: Hide deferred_invoke() debug spam.
2019-04-20 12:48:49 +02:00
Andreas Kling
6ef8e2df5a
Snake: Use a vegetable icon for the fruit.
2019-04-20 04:00:32 +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
e24e486714
Snake: Flesh out a basic snake game :^)
2019-04-20 03:24:50 +02:00
Andreas Kling
eca9494adf
Snake: Import skeleton of a new snake game.
2019-04-20 01:54:10 +02:00
Andreas Kling
54af44e354
VisualBuilder: Expose some more widget properties.
2019-04-19 23:48:19 +02:00
Andreas Kling
986f5806d7
VisualBuilder: Emit on_widget_selected() when appropriate.
...
This allows the properties window to stay in sync with what's happening.
For multi-widget selections, we don't show any properties.
2019-04-19 23:09:38 +02:00