summaryrefslogtreecommitdiff
path: root/WindowServer
AgeCommit message (Collapse)Author
2019-02-26WindowServer: Add 1920x1080 resolution option.Andreas Kling
Because it's fun to go fullscreen on my development machine. :^)
2019-02-26More compat work. Rename libraries from LibFoo.a => libfoo.aAndreas Kling
This makes it more straightforward to build a cross-compiler toolchain. Also move math stuff from LibC to LibM.
2019-02-26WindowServer: Reduce resize related debug spam.Andreas Kling
2019-02-26WindowServer: Bump height of window titlebars and menus from 16 to 18.Andreas Kling
2019-02-26WindowServer+LibGUI: Send the window size along with Paint server messages.Andreas Kling
This way GWindow doesn't need to do synchronous IPC to fetch the appropriate size for the window's backing store. This is mostly only relevant during live resize.
2019-02-26WindowServer+LibGUI: Fix global mouse tracking with recursive widget trees.Andreas Kling
Also avoid sending multiple copies of mouse events to global trackers.
2019-02-26WindowServer: Add a simple CPU usage graph to the global menu bar.Andreas Kling
This is pretty cute and helps me spot when something's chewing up CPU.
2019-02-26WindowServer: Only invalidate the menubar rect when an app changes menubar.Andreas Kling
2019-02-26WindowServer: Make message receivers be weak pointers.Andreas Kling
2019-02-25More moving towards using signed types.Andreas Kling
I'm still feeling this out, but I am starting to like the general idea.
2019-02-25Convert more RetainPtr use to Retained.Andreas Kling
2019-02-22Move over to building all of userspace with i686-pc-serenity-g++.Andreas Kling
2019-02-22Switch over to building everything with i686-elf-g++.Andreas Kling
2019-02-21Kernel: Start adding various file system permission checks.Andreas Kling
Fail with EACCES in various situations. Fix userland bugs that were exposed.
2019-02-21WindowServer: Choose resizing direction based on where it's initiated.Andreas Kling
Divide the window into 3x3 hot areas and resize in the direction of the corner where the resize starts. The middle is a no-op area. This needs some polish but the basic mechanism is good.
2019-02-21WindowServer: Oops, forgot to plumb through the base size for incresize.Andreas Kling
2019-02-21Add concept of size increments to windowing system.Andreas Kling
Use this to implement incremental resizing for Terminal so that we only ever resize to fit a perfect number of rows and columns. This is very nice. :^)
2019-02-20Rework the rendering model so that clients instantiate backing stores.Andreas Kling
This makes interactive resizing work a lot better, althought it's still not perfect. There are still glitches and unpleasant flashes of zeroed memory.
2019-02-20WindowServer: Don't spam clients with resize events.Andreas Kling
Wait for them to finish a paint, then send them a new resize event. The exception is when releasing the mouse button to end the resize. Then we send a new resize event right away.
2019-02-20WindowServer: Support resizing windows.Andreas Kling
This is pretty limited and not entirely stable, but it does work! :^)
2019-02-20WindowServer: Minor style tweak.Andreas Kling
2019-02-20WindowServer: Remove some unused WSWindowManager members.Andreas Kling
2019-02-20LibGUI: Implement enter/leave events (with WindowServer support.)Andreas Kling
Windows now learn when the mouse cursor leaves or enters them. Use this to implement GWidget::{enter,leave}_event() and use that to implement the CoolBar button effect. :^)
2019-02-19WindowServer: Display menus with 95% opacity by default.Andreas Kling
2019-02-19WindowServer: Only invalidate the menubar rect when switching menubars.Andreas Kling
2019-02-19WindowServer: Correct invalidation rects for menu windows.Andreas Kling
2019-02-19WindowServer: Avoid overdraw by shattering dirty rects into unique shards.Andreas Kling
The algorithm I came up with is O(n^2) but given the small numbers of rects we're typically working with, it doesn't really matter. May need to revisit this in the future if we find ourselves with a huge number of rects.
2019-02-19WindowServer: Support windows with alpha channels. And per-WSWindow opacity.Andreas Kling
This patch also adds a Format concept to GraphicsBitmap. For now there are only two formats: RGB32 and RGBA32. Windows with alpha channel have their backing stores created in the RGBA32 format. Use this to make Terminal windows semi-transparent for that comfy rice look. There is one problem here, in that window compositing overdraw incurs multiple passes of blending of the same pixels. This leads to a mismatch in opacity which is obviously not good. I will work on this in a later patch. The alpha blending is currently straight C++. It should be relatively easy to optimize this using SSE instructions. For now I'm just happy with the cute effect. :^)
2019-02-17Prune compiler flags a bit. Let's go with -march=i686 for now.Andreas Kling
2019-02-17WindowServer: Assume wallpaper images are 1024x768.Andreas Kling
This is obviously not always the right thing to do, but it removes some confusion while using other resolutions. Eventually we're gonna need some kind of compressed image decoder.
2019-02-17Add ability to switch video modes from the system menu.Andreas Kling
I had to change PhysicalPage around a bit for this. Physical pages can now be instantiated for any arbitrary physical address without worrying that such pages end up in the kernel page allocator when released. Most of the pieces were already in place, I just glued everything together.
2019-02-17WindowServer: Close accepted sockets when the client has disconnected.Andreas Kling
2019-02-17WindowServer: Let menu objects reference the WSClientConnection by pointer.Andreas Kling
Since these are owner/ownee relationships, there's no need for indirection.
2019-02-17WindowServer: Get rid of unnecessary messaging indirection.Andreas Kling
2019-02-17WindowServer: WSWindow can have a pointer to the client rather than an ID.Andreas Kling
Since WSWindows are owned by WSConnectionClients, it's fine for them to just reference the client directly.
2019-02-17WindowServer: Remove some debug spam.Andreas Kling
2019-02-17WindowServer: Move video mode setup to WSScreen.Andreas Kling
2019-02-17WindowServer: Make the menubar clock work again in the post-kernel world.Andreas Kling
This is actually so much better. Grabbing directly at the RTC was silly. :^)
2019-02-17Move WindowServer to userspace.Andreas Kling
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-16WindowServer: Prune more kernel-related gunk.Andreas Kling
2019-02-16SharedGraphics: Rework GraphicsBitmap::create_kernel_only() into create().Andreas Kling
And just use mmap() to allocate the pixels.
2019-02-16Kernel: Add a simple shared memory API for two processes only.Andreas Kling
And use this to implement shared bitmaps between WindowServer and clients.
2019-02-16Kernel: Add ioctls to BochsVGADevice for mode setting and page flipping.Andreas Kling
Use these in WindowServer instead of poking at the BochsVGADevice directly.
2019-02-16Kernel: Make BochsVGADevice a BlockDevice and support mmapping it.Andreas Kling
Currently you can only mmap the entire framebuffer. Using this when starting up the WindowServer gets us yet another step closer towards it moving into userspace. :^)
2019-02-15WindowServer: Slurp all available client messages when checking them.Andreas Kling
We were reading one client message per client per event loop iteration. That was not very snappy. Make the sockets non-blocking and read() until there are no messages left. It would be even better to make as few calls to read() as possible to reduce context switching, but this is already a huge improvement.
2019-02-15WindowServer: Rename GUI_Foo to WSAPI_Foo.Andreas Kling
2019-02-15Move WindowServer API types header into WindowServer/.Andreas Kling
2019-02-15Kernel: Remove GUIEventDevice.Andreas Kling
It's no longer used since all communication now happens across sockets. :^)
2019-02-14Port the WindowServer and LibGUI to communicate through local sockets.Andreas Kling
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-14WindowServer: Ignore attempts to make menu windows the active window.Andreas Kling