Andreas Kling
44e1e7423f
Kernel: Put a bunch of debug spam behind #ifdefs.
2019-03-27 15:07:12 +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
a2fe5f8517
Kernel: Don't disable interrupts during Process destruction.
2019-03-27 14:38:32 +01:00
Andreas Kling
1592612a60
Kernel: Don't disable interrupts during Thread destruction.
2019-03-27 14:30:13 +01:00
Andreas Kling
d5508e5116
Ext2FS: Avoid a lot of redundant writes to inode block arrays.
2019-03-27 14:24:37 +01:00
Andreas Kling
750d79dcaf
Kernel: Initialize the CPU to allow SSE on startup.
...
I still need to add support for SSE to the context switching code, but now
at least one process can use it.
2019-03-27 13:40:00 +01:00
Andreas Kling
5808322556
Give the emulator testing environments 128 MB of RAM.
...
I'm working on porting GCC and it needs a fair bit of memory to run.
2019-03-27 13:02:29 +01:00
Andreas Kling
1577217ce1
LibC: Let's remember that headers are in C.
2019-03-27 12:53:05 +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
f1a2cb0882
LibC: Fix fread() EOF behavior with ungetc().
2019-03-27 05:13:28 +01:00
Andreas Kling
e145344767
LibC: Remove the validate_mallocation() stuff since Binutils hates it.
2019-03-27 05:02:02 +01:00
Andreas Kling
75207ddffd
Kernel: Load ELF executable pages lazily when possible.
...
This currently only works for "normal" processes created by fork().
It does not work for create_user_process() processes spawned by the
kernel, as those are a bit special during construction.
2019-03-27 04:01:15 +01:00
Andreas Kling
baab9f4402
LibC: Implement atexit() and strtoul().
2019-03-27 01:55:39 +01:00
Andreas Kling
2a858719be
LibM: Stub out ldexp().
2019-03-27 01:41:55 +01:00
Andreas Kling
d1e55fb4d9
LibC: Add ungetc() and automatically flush streams on fclose().
2019-03-27 01:40:55 +01:00
Andreas Kling
0c2face7b0
LibC: Add creat(), execvp() resolution, and exec*() environment inheritance.
2019-03-27 01:39:13 +01:00
Andreas Kling
fb7c7829c2
Terminal: Export a simple PATH=/bin:/usr/bin to shells.
2019-03-27 01:36:33 +01:00
Andreas Kling
aef6030a80
LibC: Time-related POSIX compliance fixes.
2019-03-27 01:31:53 +01:00
Andreas Kling
abd5931184
Kernel: Print an error when trying to load an incompatible ELF image.
2019-03-27 01:29:49 +01:00
Andreas Kling
e2a24e5746
AK: printf() should support %#x and %#o.
2019-03-27 01:29:07 +01:00
Andreas Kling
f2773e05e5
LibC: fread() should return the number of elements (not bytes) read.
2019-03-26 00:10:58 +01:00
Andreas Kling
2444a35365
Base: Tweak 16x16 "open" icon.
2019-03-25 21:22:53 +01:00
Andreas Kling
ede3565e48
Base: Add 32x32 versions of filetype-socket and filetype-symlink.
2019-03-25 14:48:23 +01:00
Andreas Kling
be604652ae
LibGUI: Add GIcon::default_icon(name).
...
This is a convenience helper to instantiate a GIcon like so:
auto icon = GIcon::default_icon("filetype-image");
This will give you the "filetype-image" icon in both 16x16 and 32x32 sizes.
2019-03-25 14:46:37 +01:00
Andreas Kling
43bb7aad4c
GItemView: Some improvements to keyboard navigation.
2019-03-25 14:13:32 +01:00
Andreas Kling
a3390b6f1c
GTextEditor: Draw a simple border around single-line editors.
2019-03-25 14:13:21 +01:00
Andreas Kling
4d3478aa71
GItemView: Hide the horizontal scrollbar since we never need it.
...
This view always relayouts the content to fit the available width, so we
don't need a horizontal scrollbar. :^)
2019-03-25 13:58:47 +01:00
Andreas Kling
20137e45f4
LibGUI: Ignore GWidget::update() on invisible widgets.
2019-03-25 13:58:30 +01:00
Andreas Kling
bc3c199bb1
GItemView: Add slightly more horizontal padding to the icon labels.
2019-03-25 13:35:52 +01:00
Andreas Kling
08085f48a0
SharedGraphics: Font::width() shouldn't add spacing to the very last glyph.
2019-03-25 13:35:24 +01:00
Andreas Kling
838a06096a
GTextEditor: Shift+Delete should delete the current line.
2019-03-25 13:14:02 +01:00
Andreas Kling
fceeb9b695
GLock: Remove some debug spam.
2019-03-25 13:05:24 +01:00
Andreas Kling
500df578fe
LibGUI+Kernel: Add a GLock class (userspace mutex.)
...
It's basically a userspace port of the kernel's Lock class.
Added gettid() and donate() syscalls to support the timeslice donation
feature we already enjoyed in the kernel.
2019-03-25 13:03:49 +01:00
Andreas Kling
108b663618
GScrollBar: Clicking in the gutter should jump directly to that position.
...
I think I like how this feels but I'm not 100% sure yet, so I'm leaving
the old feel in behind an #ifdef.
2019-03-25 05:03:40 +01:00
Andreas Kling
614dafea32
FileManager+LibGUI: Show thumbnail generation progress in the statusbar.
2019-03-25 04:25:25 +01:00
Andreas Kling
32191b0d4b
GBoxLayout: Don't subtract margins from the available space twice.
2019-03-25 04:24:20 +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
1c67788933
FileManager: Don't use 32x32 thumbnails for the table view.
2019-03-25 02:16:47 +01:00
Andreas Kling
ab11f42094
Kernel: Do timekeeping manually instead of asking the RTC all the time.
...
This introduces a tiny amount of timer drift which I will have to fix
somehow eventually, but it's a huge improvement in timing consistency
as we no longer suddenly jump from e.g 10:45:49.123 to 10:45:50.000.
2019-03-25 02:06:57 +01:00
Andreas Kling
20f7d7ec67
LibGUI: Add GWidget::doubleclick_event().
...
Now double-clicking an item in a GTableView or GItemView will activate it.
2019-03-25 01:43:32 +01:00
Andreas Kling
43f9027968
FileManager: Add toolbar buttons for switching the view mode.
2019-03-25 01:29:45 +01:00
Andreas Kling
b4da451c9a
WindowServer+LibGUI: Implement automatic cursor tracking.
...
When a mouse button is pressed inside a window, put that window into an
automatic mouse tracking state where all mouse events are sent to that
window until all mouse buttons are released.
This might feel even better if it only cared about the mouse buttons you
actually pressed while *inside* the windows to get released, I don't know.
I'll have to use it for a while and see how it's like.
2019-03-24 15:01:56 +01:00
Andreas Kling
e84823360d
WindowServer: Moving a window to front should always activate it.
...
So instead of having move_to_front() + set_active_window(), let's have
move_to_front_and_make_active().
2019-03-24 13:09:46 +01:00
Andreas Kling
56ee8bfe2a
WindowServer: Factor out ongoing drag/resize from process_mouse_event().
...
The mouse event processing code is getting unwieldy. Break out two huge
chunks into separate functions so the code becomes easier to work with.
2019-03-24 13:00:12 +01:00
Andreas Kling
900a3966e2
FileManager: Don't show "." and ".." in directory views.
2019-03-24 12:27:02 +01:00
Andreas Kling
f18ed4f633
WindowServer: Reduce debug spam.
2019-03-24 04:29:33 +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
7e54fdce99
QuickShow: Fill the window with white if the opened image has alpha.
2019-03-24 03:07:00 +01:00
Andreas Kling
812dc1e9ea
FileManager: Add a very naive thumbnail generation thread.
...
This is pretty rickety since we don't have any synchronization primitives.
2019-03-24 03:00:08 +01:00
Andreas Kling
e7c1caa2b5
Kernel: Don't hang the system on unrecoverable page fault.
...
I needed this while debugging threads and now they basically work pretty
well so we can remove this. :^)
2019-03-24 02:11:07 +01:00