Commit Graph

1671 Commits

Author SHA1 Message Date
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