summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-06-29AK: Make a tiny JSON unit test based on a saved VisualBuilder form.Andreas Kling
2019-06-29LibCore: Port CProcessStatisticsReader to the JSON formatted /proc/all.Andreas Kling
2019-06-29WindowServer: Allow changing window opacity with Logo+MouseWheel.Andreas Kling
This is just a silly little feature that I thought was a bit neat. :^)
2019-06-29Kernel: Change the format of /proc/all to JSON.Andreas Kling
Update ProcessManager, top and WSCPUMonitor to handle the new format. Since the kernel is not allowed to use floating-point math, we now compile the JSON classes in AK without JsonValue::Type::Double support. To accomodate large unsigned ints, I added a JsonValue::Type::UnsignedInt.
2019-06-28Terminal: Make it so typing resets the cursor blink timer.Andreas Kling
Patch contributed by "pd"
2019-06-28Terminal: Don't write erroneous characters to PTY when modifiers pressed.Andreas Kling
Additionally the Alt modifier now generates the correct characters, as do Insert/Delete/PgUp/PgDown. Patch contributed by "pd"
2019-06-28Terminal: Changex internal opacity representation to byte instead of float.Andreas Kling
This lets us avoid some math during paint events. Patch contributed by "pd"
2019-06-28LibHTML: Start building the style tree.Andreas Kling
Walk the DOM and construct a parallel style tree that points back to the DOM and has the relevant CSS property values hanging off of them. The values are picked based on naive selector matching. There's no cascade or specificity taken into account yet.
2019-06-28AK: We can't use std::initializer_list in LibC builds.Andreas Kling
The LibC build is a bit complicated, since the toolchain depends on it. During the toolchain bootstrap, after we've built parts of GCC, we have to stop and build Serenity's LibC, so that the rest of GCC can use it. This means that during that specific LibC build, we don't yet have access to things like std::initializer_list. For now we solve this by defining SERENITY_LIBC_BUILD during the LibC build and excluding the Vector/initializer_list support inside LibC.
2019-06-28WindowServer: Make use of the new Vector(initializer_list).Andreas Kling
2019-06-28AK: Add Vector(std::initializer_list<T>) constructor.Andreas Kling
This allows us to construct a Vector from an initializer list like so: Vector<Object> objects = { object1, object2, object3 };
2019-06-28PaintBrush: Add size context menu to SprayToolRobin Burchell
2019-06-28PaintBrush: Add an erase toolRobin Burchell
2019-06-27LibHTML: Implement some very simple selector matching.Andreas Kling
We walk the entire DOM and check all selectors against all elements. Only id, class and tag name are checked right now. There's no ancestor stack or compound selectors. All in good time :^)
2019-06-27LibHTML: Start fleshing out a StyleResolver class.Andreas Kling
This will be responsible for matching selectors and creating LayoutStyle objects for the document and its elements.
2019-06-27AK: Use a SinglyLinkedList<T> as HashTable's bucket chain storage.Andreas Kling
We were using a DoublyLinkedList<T> simply because it supported remove(). This patch consolidates the SinglyLinkedList iterators and adds remove().
2019-06-27AK: Oops, fix typo in RemoveVolatile<T> helper.Andreas Kling
2019-06-27AK: Consolidate iterators for HashTable and DoublyLinkedList respectively.Andreas Kling
Get rid of the ConstIterator classes for these containers and use templated FooIterator<T, ...> and FooIterator<const T, ...> helpers. This makes the HashTable class a lot easier to read.
2019-06-27AK: Get rid of ConstVectorIterator.Andreas Kling
We can achieve the same with just a VectorIterator<const Vector, const T>.
2019-06-27AK: Simplify HashMap a bit.Andreas Kling
2019-06-27VisualBuilder: Use NonnullRefPtrVector.Andreas Kling
2019-06-27Snake: Use NonnullRefPtrVector.Andreas Kling
2019-06-27Kernel: More use of NonnullRefPtrVector in the kernel.Andreas Kling
2019-06-27AK: NonnullRefPtrVector should use Vector<T, inline_capacity> as its base.Andreas Kling
We were forgetting to plumb through the inline capacity in the Base typedef.
2019-06-27Kernel: Use NonnullRefPtrVector in parts of the kernel.Andreas Kling
2019-06-27LibHTML: Use NonnullRefPtrVector in the CSS and HTML parsers.Andreas Kling
2019-06-27AK: Allow constructing an empty NonnullRefPtrVector.Andreas Kling
2019-06-27LibHTML: Use NonnullRefPtrVector in LibHTML.Andreas Kling
2019-06-27AK: Support range-for iteration over a NonnullRefPtrVector<T>.Andreas Kling
This means you can now do this: void harmonize(NonnullRefPtrVector<Voice>& voices) { for (auto& voice : voices) { voice.sing(); // Look, no "->"! } } Pretty dang cool :^)
2019-06-27AK: Add NonnullRefPtrVector<T>.Andreas Kling
This is a slot-in convenience replacement for Vector<NonnullRefPtr<T>> that makes accessors return T& instead of NonnullRefPtr<T>&. Since NonnullRefPtr guarantees non-nullness, this allows you to access these vector elements using dot (.) rather than arrow (->). :^)
2019-06-27Kernel: Use a raw VM region for sorting ELF symbols instead of a Vector.Andreas Kling
This avoids putting pressure on kmalloc() during backtrace symbolication. Since we dump backtrace for every process that exits, this is actually a decent performance improvement for things like GCC that chain a lot of processes together.
2019-06-27LibHTML: Add a StyledNode class.Andreas Kling
I'd like to try doing DOM -> style tree -> layout tree. I'm not exactly sure how it's gonna work, but we'll figure it out as we go.
2019-06-26Kernel: Automatically populate page tables with lazy kernel regions.Andreas Kling
If we get an NP page fault in a process, and the fault address is in the kernel address range (anywhere above 0xc0000000), we probably just need to copy the page table info over from the kernel page directory. The kernel doesn't allocate address space until it's needed, and when it does allocate some, it only puts the info in the kernel page directory, and any *new* page directories created from that point on. Existing page directories need to be updated, and that's what this patch fixes.
2019-06-26Kernel: Make the x86 paging code slightly less insane.Andreas Kling
Instead of PDE's and PTE's being weird wrappers around dword*, just have MemoryManager::ensure_pte() return a PageDirectoryEntry&, which in turn has a PageTableEntry* entries(). I've been trying to understand how things ended up this way, and I suspect it was because I inadvertently invoked the PageDirectoryEntry copy ctor in the original work on this, which must have made me very confused.. Anyways, now things are a bit saner and we can move forward towards a better future, etc. :^)
2019-06-26LibC: Uhm, htonl() shouldn't byte-swap on big endian machines.Andreas Kling
2019-06-26LibC: Clean up htonl() and ntohl() families.Andreas Kling
Use __builtin_bswap() intrinsics for the byte swapping. Also don't swap on systems where BYTE_ORDER != LITTLE_ENDIAN. This doesn't really affect us at the moment since Serenity only targets x86, but I figured it doesn't hurt to do things right. :^)
2019-06-26AK: Use __builtin_bswap() in NetworkOrdered.Andreas Kling
2019-06-26AK: Simplify NetworkOrdered somewhat.Andreas Kling
2019-06-25Move common Application build steps into their own Makefile.commonLawrence Manning
Further consolidation is of course possible, eg the Games/ programs follow the same rules more or less.
2019-06-25PaintBrush: Allow RGBA32 to use the bucket and spray tools.Andreas Kling
Eventually I'd like to do some kind of bitmap layers, and we definitely want alpha channel support then, so let's just not paint ourselves into an uncomfortable corner early on. :^)
2019-06-25GraphicsBitmap: Add bpp(), returns the number of bits per pixel.Andreas Kling
2019-06-25PaintBrush: Add support for opening files.Andreas Kling
Obviously this only supports whatever PNG files that load_png() can decode at the moment.
2019-06-25LibHTML: Add a simple TreeNode<T> template for making trees.Andreas Kling
We'll be making a lot of trees here, so let's share code during bootstrap. Eventually some of these classes are gonna want custom trees but for now we can just fit them all into the same clothes.
2019-06-25JsonParser: Support basic escaped string characters.Andreas Kling
I didn't implement \uXXXX-style escape in this patch. That's a FIXME.
2019-06-25LibHTML: Flesh out the code to dump a StyleSheet object graph.Andreas Kling
2019-06-25Kernel: Share code between all the exceptions that cause process crash.Andreas Kling
2019-06-24StringImpl: Fix possible uninitialized access in StringImpl::create().Andreas Kling
If the provided length is 0, there's no need to dereference the const char*.
2019-06-24AK: Add JsonValue::to_string(default_value = {}).Andreas Kling
2019-06-24AK: Let's put the JSON parsing in a separate class.Andreas Kling
2019-06-24JsonValue: Add as_array() and as_object().Andreas Kling