diff --git a/Libraries/LibGUI/Window.cpp b/Libraries/LibGUI/Window.cpp index 7257ecdd320..5fe3b255e3c 100644 --- a/Libraries/LibGUI/Window.cpp +++ b/Libraries/LibGUI/Window.cpp @@ -587,7 +587,7 @@ void Window::apply_icon() if (!has_set_process_icon) set_process_icon(m_icon->shbuf_id()); - WindowServerConnection::the().send_sync(m_window_id, m_icon->shbuf_id(), m_icon->size()); + WindowServerConnection::the().send_sync(m_window_id, m_icon->to_shareable_bitmap(WindowServerConnection::the().server_pid())); } void Window::start_wm_resize() diff --git a/Servers/WindowServer/ClientConnection.cpp b/Servers/WindowServer/ClientConnection.cpp index 5065d2deade..4b0449d7713 100644 --- a/Servers/WindowServer/ClientConnection.cpp +++ b/Servers/WindowServer/ClientConnection.cpp @@ -361,12 +361,10 @@ OwnPtr ClientConnection::ha } auto& window = *(*it).value; - auto icon_buffer = SharedBuffer::create_from_shbuf_id(message.icon_buffer_id()); - - if (!icon_buffer) { - window.set_default_icon(); + if (message.icon().is_valid()) { + window.set_icon(*message.icon().bitmap()); } else { - window.set_icon(Gfx::Bitmap::create_with_shared_buffer(Gfx::BitmapFormat::RGBA32, *icon_buffer, message.icon_size())); + window.set_default_icon(); } window.frame().invalidate_title_bar(); diff --git a/Servers/WindowServer/WindowServer.ipc b/Servers/WindowServer/WindowServer.ipc index 99796c4241e..a163615ef89 100644 --- a/Servers/WindowServer/WindowServer.ipc +++ b/Servers/WindowServer/WindowServer.ipc @@ -79,7 +79,7 @@ endpoint WindowServer = 2 SetWallpaperMode(String mode) => () SetResolution(Gfx::Size resolution) => (bool success, Gfx::Size resolution) - SetWindowIconBitmap(i32 window_id, i32 icon_buffer_id, Gfx::Size icon_size) => () + SetWindowIconBitmap(i32 window_id, Gfx::ShareableBitmap icon) => () GetWallpaper() => (String path) SetWindowOverrideCursor(i32 window_id, i32 cursor_type) => ()