Commit graph

17 commits

Author SHA1 Message Date
Andreas Kling
fa452fadca WindowServer: Let menu objects reference the WSClientConnection by pointer.
Since these are owner/ownee relationships, there's no need for indirection.
2019-02-17 09:07:07 +01:00
Andreas Kling
f02a490230 WindowServer: Get rid of unnecessary messaging indirection. 2019-02-17 08:58:42 +01:00
Andreas Kling
9a39c01551 WindowServer: WSWindow can have a pointer to the client rather than an ID.
Since WSWindows are owned by WSConnectionClients, it's fine for them to just
reference the client directly.
2019-02-17 08:54:57 +01:00
Andreas Kling
640360e958 Move WindowServer to userspace.
This is a monster patch that required changing a whole bunch of things.
There are performance and stability issues all over the place, but it works.
Pretty cool, I have to admit :^)
2019-02-17 00:13:47 +01:00
Andreas Kling
c3d36a5fe9 WindowServer: Prune more kernel-related gunk. 2019-02-16 12:25:47 +01:00
Andreas Kling
4ea28bf0a5 Kernel: Add a simple shared memory API for two processes only.
And use this to implement shared bitmaps between WindowServer and clients.
2019-02-16 12:13:43 +01:00
Andreas Kling
29c49356e3 WindowServer: Rename GUI_Foo to WSAPI_Foo. 2019-02-15 09:17:18 +01:00
Andreas Kling
a54cd84c59 Move WindowServer API types header into WindowServer/. 2019-02-15 09:14:21 +01:00
Andreas Kling
bf58241c11 Port the WindowServer and LibGUI to communicate through local sockets.
This is really cool! :^)

Apps currently refuse to start if the WindowServer isn't listening on the
socket in /wsportal. This makes sense, but I guess it would also be nice
to have some sort of "wait for server on startup" mode.

This has performance issues, and I'll work on those, but this stuff seems
to actually work and I'm very happy with that.
2019-02-14 17:18:35 +01:00
Andreas Kling
2733a788eb WindowServer: Make MenuBar unaware of Process. 2019-02-14 10:49:59 +01:00
Andreas Kling
7723c06f27 WindowServer: Make WSMenu use WSClientConnection::post_message(). 2019-02-14 10:45:27 +01:00
Andreas Kling
e5df2a5d5b WindowServer: Post error if trying to destroy non-existent menubar. 2019-02-14 10:31:39 +01:00
Andreas Kling
5d30c6b00c WindowServer: Add WSClientConnection::create_bitmap().
There we go. Now WSWindow doesn't know about Process at all.
2019-02-14 10:29:17 +01:00
Andreas Kling
9ab9734da0 WindowServer: Add WSClientConnection::post_message().
This way WSWindow doesn't have to grab at the Process.
2019-02-14 10:15:49 +01:00
Andreas Kling
222a6f7bbc WindowServer: Post error messages to clients on protocol failure. 2019-02-14 09:32:34 +01:00
Andreas Kling
28da956a12 WindowServer: Refactor WSClientConnection to have one function per request.
This is a lot nicer than the big switch full of code. This stuff has a bit
of a "please generate me instead" vibe to it, but I need to mess around with
it some more to figure out what the needs are.

This patch also unbreaks global cursor tracking, which was forgotten in the
big messaging refactoring.
2019-02-14 08:43:29 +01:00
Andreas Kling
aa7947c889 WindowServer: Add WSClientConnection class to manage an individual client.
This makes both object lifetimes and object ID's a lot easier to understand.
2019-02-14 08:22:47 +01:00