summaryrefslogtreecommitdiff
path: root/Servers
AgeCommit message (Collapse)Author
2019-05-01WindowServer+LibGUI: Wait for the extra_data to arrive.Andreas Kling
Since the sockets we use are non-blocking, just slap a select before the second call to read(). This fixes some flakiness seen under load. This should eventually work a bit differently, we could use recv() once it has MSG_WAITALL, and we should not let WindowServer handle all the client connections on the main thread. But for now, this works. Fixes #24.
2019-05-01WindowServer: Spawn a secondary thread to decode wallpapers.Andreas Kling
The threading API's are not very mature, so this code looks a bit crufty but it does take the load off the WindowServer main thread when changing wallpapers. :^)
2019-04-30WindowServer: Tweak window minimize button appearance.Andreas Kling
2019-04-29WindowServer: Make WSMenu wide enough that shortcuts are always rightmost.Andreas Kling
2019-04-28WindowServer: Add 1280x720 resolution to the system menu.Andreas Kling
2019-04-26LibGUI+WindowServer: Make it possible to have checkable GActions.Andreas Kling
They show up as checkable GButtons in GToolBar, and with (or without) check marks in menus. There are a bunch of places to make use of this. This patch only takes advantage of it in the FileManager for the view type actions.
2019-04-25WindowServer: Ignore title change notifications for non-normal windows.Andreas Kling
2019-04-23WindowServer+TaskBar: Add a taskbar window button popup menu.Andreas Kling
This patch only hooks up the minimize and unminimize actions.
2019-04-23WindowServer: Add some padding to the window switcher items.Andreas Kling
2019-04-23WindowServer: Remove debug spam about activating non-normal windows.Andreas Kling
2019-04-23Do a pass of compiler warning fixes.Andreas Kling
This is really making me question not using 64-bit integers more.
2019-04-23WindowServer: WSButton should be more discerning with MouseUp/MouseMove.Andreas Kling
2019-04-22WindowServer+LibGUI: Allow arbitrary number of rects in messages.Andreas Kling
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-21WindowServer: Limit paint request rects to the visible window rect.Andreas Kling
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-21Include Makefile.common in all other Makefiles.Andreas Kling
2019-04-20WindowServer+LibGUI: Coalesce multiple client paints into GMultiPaintEvents.Andreas Kling
This allows GWindow to paint up to 32 separate rects before telling the WindowServer to flip the buffers. Quite a bit smoother. :^)
2019-04-20WindowSerer+LibGUI: Send multiple rects in invalidation/flush messages.Andreas Kling
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-20WindowServer: Introduce a WM event mask so Taskbar can ignore window rects.Andreas Kling
Taskbar was waking up to do nothing every time a window rect changed.
2019-04-20AK: Add String::copy(BufferType) helper.Andreas Kling
This will create a String from any BufferType that has data() and size().
2019-04-20Get rid of SERENITY macro since the compiler already defines __serenity__Andreas Kling
This makes it a bit easier to use AK templates out-of-tree.
2019-04-20WindowServer: Fix minor header dependency issue.Andreas Kling
2019-04-18WindowServer: Improve the look of menu separators.Andreas Kling
2019-04-18WindowServer: Broadcast window icons to newly joined WM listener clients.Andreas Kling
2019-04-18ProcessManager+WindowServer: Do a little less malloc() in CPU monitor code.Andreas Kling
2019-04-18WindowServer: Tweak window icon placement again.Andreas Kling
2019-04-18WindowServer: Make window title bars slightly thicker. :^)Andreas Kling
2019-04-18WindowServer: Generate a separate WM event for window icon changes.Andreas Kling
2019-04-18WindowServer: Use CFile in the CPU monitor code.Andreas Kling
2019-04-17WindowServer: Mouse switching between system menu and app menu was broken.Andreas Kling
2019-04-16WindowServer: Tweak window icon placement.Andreas Kling
2019-04-16WindowServer: Improve the look of menus.Andreas Kling
This patch makes menus stand out a bit more from their background by using the same kind of shading that Windows 2000 had.
2019-04-16WindowServer: Don't waste time pre-filling windows with background color.Andreas Kling
There's a subsequent pass that fills whatever the backing store didn't cover anyway, just a few lines later. This was all wasted work.
2019-04-16Make better use of geometry class helpers in some places.Andreas Kling
2019-04-15WindowServer: Let the CPU monitor keep /proc/all open between refreshes.Andreas Kling
Just seek to the beginning on every iteration and start over. This avoids a bunch of syscalls.
2019-04-14LibCore: Add a convenience constructor for CTimer.Andreas Kling
new CTimer(250, [] { thing_to_do_every_250_msec(); });
2019-04-14WindowServer: Simplify a few things in WSEventLoop.Andreas Kling
2019-04-14WindowServer: Rename WSMessage* => WSEvent*.Andreas Kling
Since I'm on a roll here, I'll just rename WSMessageFoo to WSEventFoo now that these inherit from CEventFoo anyway.
2019-04-14WindowServer: Port WindowServer to LibCore.Andreas Kling
This was pretty straightforward thanks to the work I did separating out LibCore from LibGUI already. :^) - WSMessageLoop now inherits from CEventLoop. - WSMessage now inherits from CEvent. - WSMessageReceiver goes away. Now there is only one event loop in Serenity. Very nice!
2019-04-14WindowServer: Move the CPU monitor thingy to its own class.Andreas Kling
2019-04-14AK: Improve smart pointer ergonomics a bit.Andreas Kling
2019-04-14WindowServer: Make menu windows inherently modal.Andreas Kling
It was confusing that you could interact with other windows with a menu up.
2019-04-14LibGUI+WindowServer: Add a way to dismiss opened menus from the client.Andreas Kling
2019-04-13WindowServer+LibGUI: Add ability to set per-window icons.Andreas Kling
The icons are passed around as filesystem paths for now, since the shared memory bitmaps only support 2 sides.
2019-04-12LibGUI+WindowServer: Add support for per-GWidget context menus.Andreas Kling
You can now simply assign a GMenu as a GWidget's context menu and it will automagically pop up on right click. :^)
2019-04-12LibGUI+WindowServer: Add support for enabled/disabled actions.Andreas Kling
The enabled state of a GAction now propagates both to any toolbar buttons and any menu items linked to the action. Toolbar buttons are painted in a grayed out style when disabled. Menu items are gray when disabled. :^)
2019-04-11WindowServer: Tweak window title positioning.Andreas Kling
2019-04-11WindowServer: Add 1440x900 resolution shortcut to system menu.Andreas Kling
2019-04-10Introduce LibCore and move GElapsedTimer => CElapsedTimer.Andreas Kling
I need a layer somewhere between AK (usable both by userspace and kernel) and LibGUI (usable by userspace except WindowServer.) So here's LibCore.
2019-04-10WindowServer: Stop tracking whether clients have painted since last resize.Andreas Kling
This optimization is no longer needed now that clients coalesce resizes on their own. :^)
2019-04-10LibGUI+WindowServer: Coalesce paints and resizes on the client side.Andreas Kling
Only process paint and resize events on the GUI client side if those events have the latest up-to-date window size. This drastically reduces async overdraw during interactive resize.