1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 16:48:12 +00:00

WindowServer+LibGUI: Remove awkward roundtrip for set wallpaper response

Previously we would wait for a separate message confirming that a
wallpaper got set instead of just calling a synchronous api.

I'm guessing that this was a limitation of the IPC system when
WindowServer got ported to using it.

This patch removes the SetWallpaperFinished message and updates the
set_wallpaper api to synchronously return a success boolean.
This commit is contained in:
networkException 2022-08-02 00:51:37 +02:00 committed by Brian Gianforcaro
parent 2cdc7c4ca0
commit ad060befad
7 changed files with 8 additions and 17 deletions

View file

@ -67,14 +67,14 @@ bool Desktop::set_wallpaper(RefPtr<Gfx::Bitmap> wallpaper_bitmap, Optional<Strin
return false;
TemporaryChange is_setting_desktop_wallpaper_change(m_is_setting_desktop_wallpaper, true);
ConnectionToWindowServer::the().async_set_wallpaper(wallpaper_bitmap ? wallpaper_bitmap->to_shareable_bitmap() : Gfx::ShareableBitmap {});
auto ret_val = ConnectionToWindowServer::the().wait_for_specific_message<Messages::WindowClient::SetWallpaperFinished>()->success();
auto result = ConnectionToWindowServer::the().set_wallpaper(wallpaper_bitmap ? wallpaper_bitmap->to_shareable_bitmap() : Gfx::ShareableBitmap {});
if (ret_val && path.has_value()) {
if (result && path.has_value()) {
dbgln("Saving wallpaper path '{}' to ConfigServer", *path);
Config::write_string("WindowManager"sv, "Background"sv, "Wallpaper"sv, *path);
}
return ret_val;
return result;
}
}