summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-08-18AudioServer: Turn ASMixer into a CObjectAndreas Kling
It was wrongly inheriting from RefCounted<AudioServer> without using reference counting. Let's just make it a CObject instead.
2019-08-18LibCore: Make it possible to pass a parent to CFile constructorsAndreas Kling
2019-08-18LibGUI: Let GWindow::set_main_widget() take ownership of the widgetAndreas Kling
We were already doing this anyway, with ~GWindow() calling delete on the main widget.
2019-08-18LibCore: Childify children of CLocalServer and IPC::ConnectionAndreas Kling
Inspecting a "TextEditor" process with Inspector now looks awesome. :^)
2019-08-18LibGUI: Make the timers in GAbstractButton and GScrollBar into childrenAndreas Kling
2019-08-18WindowServer: Make WSMenu's be children of the WSClientConnectionAndreas Kling
2019-08-18WindowServer: Make WSCompositor the parent of its timersAndreas Kling
2019-08-18LibCore: Make CSocket's notifiers into children of the CSocketAndreas Kling
The Inspector app quickly exposes crappy flat object hiearchies without parent/child relationships. This is one of many commits that improves the situation by making parent/child CObject relationships explicit.
2019-08-18WindowServer: Tell WSWindows who their CObject parent isAndreas Kling
Instead of using a weird "internal owner" pointer, just set the owning object as the CObject::parent of WSWindow.
2019-08-18Inspector: Implement RemoteObjectGraphModel::parent_index()Andreas Kling
This makes GTreeView paint the tree lines correctly. It's a bit weird that this is needed, but straightforward to implement so meh.
2019-08-18Inspector: Add a custom 16x16 icon to represent objectsAndreas Kling
Behold, my finest "1990's OOP cube icon" :^)
2019-08-18Inspector: Add a GUI tool for viewing a remote process's CObject graphAndreas Kling
Here comes the foundation for a neat remote debugging tool. Right now, it connects to a remote process's CEventLoop RPC socket and retreives the remote object graph JSON dump. The remote object graph is then reconstructed and exposed through a GModel subclass, which is then displayed in a GTreeView. It's pretty cool, I think. :^)
2019-08-18GTreeView: Support multiple root-level itemsAndreas Kling
Previously it was only possible to have a single root-level item in a GTreeView. This was an oversight and I didn't realize it because this code was only ever used in the FileManager, which has one root ("/"). Also factored out item toggling into a separate function, and increase the base indentation level so that root items can be toggled as well. Finally, let the user toggle the selected item with the spacebar. :^)
2019-08-18GModel: Have create_index() take a const void*Andreas Kling
This is just for convenience really. It lets you skip const_casting in all the code that calls this API, which you would basically always be doing otherwise.
2019-08-18LibGUI: Add LogStream operator<< for GModelIndexAndreas Kling
2019-08-18LibHTML: Implement basic block height computationAndreas Kling
..and add vertical box properties to the layout tree dumps.
2019-08-18LibHTML: Finish the block width calculationAndreas Kling
Also add horizontal box values to the layout tree dump.
2019-08-18LibHTML: Fix host build and turn on ccacheAndreas Kling
2019-08-18Kernel: Implement generic VGA device using multiboot infoConrad Pankoff
This implements a very basic VGA device using the information provided to us by the bootloader in the multiboot header. This allows Serenity to boot to the desktop on basically any halfway modern system.
2019-08-18WindowServer: Detect framebuffer capabilities and settingsConrad Pankoff
The main changes are twofold: * Buffer flipping is now controlled by the m_screen_can_set_buffer flag in WSCompositor. This flag, in turn, is impacted by m_can_set_buffer flag, in WSScreen. m_can_set_buffer is set in the WSScreen constructor by checking the return value of fb_set_buffer. If the framebuffer supports this operation, it will succeed, and we record this fact. This information is then used by WSCompositor to set its own m_screen_can_set_buffer flag. * WSScreen now only requests a resolution change of the framebuffer. The driver itself is ultimately responsible for what resolution or mode is actually set, so WSScreen has to read the response from that request, and has no choice but to accept the answer. This allows the driver to choose a "close enough" value to what was requested, or simply ignore it. The result of this is that there is no special configuration necessary for WindowServer to work with reduced-capability framebuffer devices.
2019-08-18Kernel: Implement generic framebuffer ioctls in BXVGAConrad Pankoff
This also hides some functions that were previously public, since that same functionality is now exposed via ioctl functions.
2019-08-18Kernel: Add framebuffer ioctls; wrap raw ioctls with a C APIConrad Pankoff
2019-08-18LibC: Move duplicated winsize struct definition into ioctl_numbers.hConrad Pankoff
2019-08-18Kernel: Disable VGA console in graphical modeConrad Pankoff
2019-08-18Shell: Support forward deleteConrad Pankoff
2019-08-17LibC: Fix strtol() not populating `endptr' for valid stringsAndreas Kling
We were not writing anything out to the `endptr` pointer if a number was successfully parsed from the input string. Fixes #460.
2019-08-17Meta: Add some more notes to the contribution guidelinesAndreas Kling
2019-08-17Kernel: Make crash dumps look aligned once againAndreas Kling
This broke with the recent changes to make printf hex fields behave a bit more correctly.
2019-08-17FloppyDiskDevice: Fixed hang on wait_for_irq() (#458)Jesse
It turns out that the `SenseInterrupt` command is actually very important! The system hangs if it's not there! Whoops...!
2019-08-17GTableView: Fix column resize cursor not showing up in scrolled tablesAndreas Kling
If the table was scrolled somewhat, we'd stop showing the resize cursor when hovering the mouse cursor between two table column headers.
2019-08-17GTableView: Fix row selection when clicking between two cellsAndreas Kling
We should still select the entire row when you click between two cells.
2019-08-17Kernel: Do the umount() by the guest's root inode identifierAndreas Kling
It was previously possible to unmount a filesystem mounted on /mnt by doing e.g "umount /mnt/some/path".
2019-08-17SystemServer: Don't spawn a TTYServer on on /dev/tty0Andreas Kling
tty0 receives input while WindowServer is up, which meant that having a shell on tty0 would cause commands typed into Terminal to run twice, once in Terminal's shell, and once on the tty0 shell. Long term we shouldn't send input to any VirtualConsole while the WindowServer is up, so this just fixes the immediate weirdness. :^)
2019-08-17Ext2FS: Clean up prepare_to_unmount() a little bitAndreas Kling
2019-08-17Kernel+SystemServer: Mount filesystems and start TTYServer in userspaceSergey Bugaev
2019-08-17Meta: Fix .gitignore excluding files under Base/Sergey Bugaev
2019-08-17Userland: Reimplement the mount commandSergey Bugaev
This new version can do three things: * When invoked as `mount`, it will print out a list of mounted filesystem, * When invoked as `mount -a`, it will try to mount filesystems listed in /etc/fstab, * When invoked as `mount device mountpoint -t fstype`, it will mount that device on that mountpoint. If not specified, fstype defaults to ext2.
2019-08-17LibCore: Fix a crash in CArgsParserSergey Bugaev
2019-08-17LibC: Implement wait()Sergey Bugaev
This is a simple convenience wrapper over waitpid().
2019-08-17Kernel: Expose info about source devices of mounts in /proc/dfSergey Bugaev
2019-08-17Kernel+LibC+Userland: Support mounting other kinds of filesystemsSergey Bugaev
2019-08-17DevPtsFS: Do not assume there is one of itSergey Bugaev
Unfortunately, that also means it can no longer inherit from SynthFS.
2019-08-17ProcFS: Do not assume there is one of itSergey Bugaev
The complication is around /proc/sys/ variables, which were attached to inodes. Now they're their own thing, and the corresponding inodes are lazily created (as all other ProcFS inodes are) and simply refer to them by index.
2019-08-17LibCore+rpcdump: Publish CObject graph to on-demand RPC socketAndreas Kling
All programs that have a CEventLoop now allow local socket connections via /tmp/rpc.PID and will dump a serialized JSON array of all the live CObjects in the program onto connecting sockets. Also added a small /bin/rpcdump tool that connects to an RPC socket and produces a raw dump of the JSON that comes out.
2019-08-17CObject: Put all CObjects on a global IntrusiveList for introspectionAndreas Kling
This will allow us to easily traverse the entire CObject graph.
2019-08-17IntrusiveList: Make Iterator::operator* return a T&Andreas Kling
This makes iteration a little more pleasant :^)
2019-08-17DevTools: Add CLocalServer to the host-side tool build dependenciesAndreas Kling
2019-08-17LibCore: CIODevice::set_error() is meant to be called with the 'errno'Andreas Kling
The point of this function is to stash away the innermost error code so that we don't lose it by the time we get back to the client code.
2019-08-17LocalSocket: Make recvfrom() return 0 to signal EOF when peer is goneAndreas Kling
Once the peer has disconnected, recvfrom() should always return 0 once the socket buffer has been drained.
2019-08-17Meta: Fix up clean buildsAndreas Kling
This is kind of a mess, but because IPC client code depending on the IPC protocol definition artifacts in the server code, we have to build the IPC servers first. And their dependencies before that, etc. One more drop in the "maybe we should switch to CMake" bucket..