mirror of
https://github.com/RGBCube/serenity
synced 2025-05-16 18:55:07 +00:00
Kernel+ProcessManager: Let processes have an icon and show it in the table.
Processes can now have an icon assigned, which is essentially a 16x16 RGBA32 bitmap exposed as a shared buffer ID. You set the icon ID by calling set_process_icon(int) and the icon ID will be exposed through /proc/all. To make this work, I added a mechanism for making shared buffers globally accessible. For safety reasons, each app seals the icon buffer before making it global. Right now the first call to GWindow::set_icon() is what determines the process icon. We'll probably change this in the future. :^)
This commit is contained in:
parent
7356fd389f
commit
5ded77df39
14 changed files with 97 additions and 2 deletions
|
@ -635,6 +635,16 @@ void GWindow::set_icon(const GraphicsBitmap* icon)
|
|||
painter.blit({ 0, 0 }, *icon, icon->rect());
|
||||
}
|
||||
|
||||
int rc = seal_shared_buffer(m_icon->shared_buffer_id());
|
||||
ASSERT(rc == 0);
|
||||
|
||||
rc = share_buffer_globally(m_icon->shared_buffer_id());
|
||||
ASSERT(rc == 0);
|
||||
|
||||
static bool has_set_process_icon;
|
||||
if (!has_set_process_icon)
|
||||
set_process_icon(m_icon->shared_buffer_id());
|
||||
|
||||
WSAPI_ClientMessage message;
|
||||
message.type = WSAPI_ClientMessage::Type::SetWindowIconBitmap;
|
||||
message.window_id = m_window_id;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue