summaryrefslogtreecommitdiff
path: root/SharedGraphics/GraphicsBitmap.cpp
AgeCommit message (Collapse)Author
2019-04-03GraphicsBitmap: Use MappedFile.Andreas Kling
2019-03-22Use the PNG loader for all images, and get rid of the .rgb files.Andreas Kling
2019-03-17Add client-side double buffering of window backing stores.Andreas Kling
This prevents flicker and looks rather good. The main downside is that resizing gets even more sluggish. That's the price we pay for now.
2019-03-08Add a C++ helper class for working with shared buffers.Andreas Kling
This is a bit more comfortable than passing the shared buffer ID manually everywhere and keeping track of size etc.
2019-02-25AK: Add Retained<T>, like RetainPtr, but never null.Andreas Kling
Also use some Clang attribute wizardry to get a warning for use-after-move.
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-17SharedGraphics: Assign a human-friendly name for mmapped GraphicsBitmap.Andreas Kling
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-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-11WindowServer: Start implementing a menu system.Andreas Kling
I'm going with a global top-of-the-screen menu instead of per-window menus. The basic idea is that menus will live in the WindowServer and clients can create menus via WindowServer requests.
2019-02-08SharedGraphics: GraphicsBitmap::load_from_file() should be allowed to fail.Andreas Kling
It's okay if it fails to load a bitmap in kernel space. Just return nullptr.
2019-02-08SharedGraphics: Allocate file-backed kernel GraphcisBitmaps in WindowServer.Andreas Kling
2019-02-07Start working on a simple Launcher app.Andreas Kling
Let GButton have an optional icon (GraphicsBitmap) that gets rendered in the middle of the button if present. Also add GraphicsBitmap::load_from_file() which allows mmap'ed RGBA32 files. I wrote a little program to take "raw" files from GIMP and swizzle them into the correct byte order.
2019-02-05Show the amount of memory in GraphicsBitmaps in /bin/top.Andreas Kling
This seems like an extremely relevant metric to track.
2019-01-31Big, possibly complete sweep of naming changes.Andreas Kling
2019-01-31Kernel: Make Process a Weakable class.Andreas Kling
Use this to fix a use-after-free in ~GraphicsBitmap(). We'd hit this when the WindowServer was doing a deferred destruction of a WSWindow whose backing store referred to a now-reaped Process.
2019-01-26WindowServer: Rename WSEvent to WSMessage.Andreas Kling
Also do the same for WSMessageLoop and WSMessageReceiver. More to come.
2019-01-26Refactor GUI rendering model to be two-phased.Andreas Kling
Instead of clients painting whenever they feel like it, we now ask that they paint in response to a paint message. After finishing painting, clients notify the WindowServer about the rect(s) they painted into and then flush eventually happens, etc. This stuff leaves us with a lot of badly named things. Need to fix that.
2019-01-24Kernel: Finally stop exposing Region members to the public.Andreas Kling
2019-01-22Kernel: Refactor Region/PageDirectory ownership model.Andreas Kling
Make PageDirectory retainable and have each Region co-own the PageDirectory they're mapped into. When unmapped, Region has no associated PageDirectory. This allows Region to automatically unmap itself when destroyed.
2019-01-21WindowServer: Map shared GraphicsBitmaps read-only on the server side.Andreas Kling
2019-01-21Mark the two Regions used GraphicsBitmaps as explicitly shared.Andreas Kling
This fixes a goofy problem where forking a GUI process would cowify the GraphicsBitmap for everyone making a hue confusing mess.
2019-01-19Make a SharedGraphics directory for classes shared between Kernel and LibGUI.Andreas Kling