1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 14:27:35 +00:00

Userland: Make IPC results with one return value available directly

This changes client methods so that they return the IPC response's
return value directly - instead of the response struct - for IPC
methods which only have a single return value.
This commit is contained in:
Gunnar Beutner 2021-05-03 13:55:29 +02:00 committed by Andreas Kling
parent 5bb79ea0a7
commit eb21aa65d1
18 changed files with 58 additions and 111 deletions

View file

@ -22,8 +22,8 @@ void ClientConnection::handshake()
void ClientConnection::enqueue(const Buffer& buffer)
{
for (;;) {
auto response = enqueue_buffer(buffer.anonymous_buffer(), buffer.id(), buffer.sample_count());
if (response.success())
auto success = enqueue_buffer(buffer.anonymous_buffer(), buffer.id(), buffer.sample_count());
if (success)
break;
sleep(1);
}
@ -31,53 +31,7 @@ void ClientConnection::enqueue(const Buffer& buffer)
bool ClientConnection::try_enqueue(const Buffer& buffer)
{
auto response = enqueue_buffer(buffer.anonymous_buffer(), buffer.id(), buffer.sample_count());
return response.success();
}
bool ClientConnection::get_muted()
{
return IPCProxy::get_muted().muted();
}
void ClientConnection::set_muted(bool muted)
{
IPCProxy::set_muted(muted);
}
int ClientConnection::get_main_mix_volume()
{
return IPCProxy::get_main_mix_volume().volume();
}
void ClientConnection::set_main_mix_volume(int volume)
{
IPCProxy::set_main_mix_volume(volume);
}
int ClientConnection::get_remaining_samples()
{
return IPCProxy::get_remaining_samples().remaining_samples();
}
int ClientConnection::get_played_samples()
{
return IPCProxy::get_played_samples().played_samples();
}
void ClientConnection::set_paused(bool paused)
{
IPCProxy::set_paused(paused);
}
void ClientConnection::clear_buffer(bool paused)
{
IPCProxy::clear_buffer(paused);
}
int ClientConnection::get_playing_buffer()
{
return IPCProxy::get_playing_buffer().buffer_id();
return enqueue_buffer(buffer.anonymous_buffer(), buffer.id(), buffer.sample_count());
}
void ClientConnection::finished_playing_buffer(i32 buffer_id)

View file

@ -24,19 +24,6 @@ public:
void enqueue(const Buffer&);
bool try_enqueue(const Buffer&);
bool get_muted();
void set_muted(bool);
int get_main_mix_volume();
void set_main_mix_volume(int);
int get_remaining_samples();
int get_played_samples();
int get_playing_buffer();
void set_paused(bool paused);
void clear_buffer(bool paused = false);
Function<void(i32 buffer_id)> on_finish_playing_buffer;
Function<void(bool muted)> on_muted_state_change;
Function<void(int volume)> on_main_mix_volume_change;

View file

@ -99,7 +99,7 @@ bool Launcher::seal_allowlist()
bool Launcher::open(const URL& url, const String& handler_name)
{
return connection().open_url(url, handler_name).response();
return connection().open_url(url, handler_name);
}
bool Launcher::open(const URL& url, const Details& details)
@ -110,12 +110,12 @@ bool Launcher::open(const URL& url, const Details& details)
Vector<String> Launcher::get_handlers_for_url(const URL& url)
{
return connection().get_handlers_for_url(url.to_string()).handlers();
return connection().get_handlers_for_url(url.to_string());
}
auto Launcher::get_handlers_with_details_for_url(const URL& url) -> NonnullRefPtrVector<Details>
{
auto details = connection().get_handlers_with_details_for_url(url.to_string()).handlers_details();
auto details = connection().get_handlers_with_details_for_url(url.to_string());
NonnullRefPtrVector<Details> handlers_with_details;
for (auto& value : details) {
handlers_with_details.append(Details::from_details_str(value));

View file

@ -186,7 +186,7 @@ void Application::tooltip_show_timer_did_fire()
Gfx::IntRect desktop_rect = Desktop::the().rect();
const int margin = 30;
Gfx::IntPoint adjusted_pos = WindowServerConnection::the().get_global_cursor_position().position();
Gfx::IntPoint adjusted_pos = WindowServerConnection::the().get_global_cursor_position();
adjusted_pos.translate_by(0, 18);

View file

@ -59,7 +59,7 @@ bool Desktop::set_wallpaper(const StringView& path, bool save_config)
String Desktop::wallpaper() const
{
return WindowServerConnection::the().get_wallpaper().path();
return WindowServerConnection::the().get_wallpaper();
}
}

View file

@ -37,12 +37,12 @@ DragOperation::Outcome DragOperation::exec()
drag_bitmap = bitmap->to_shareable_bitmap();
}
auto response = WindowServerConnection::the().start_drag(
auto started = WindowServerConnection::the().start_drag(
m_mime_data->text(),
m_mime_data->all_data(),
drag_bitmap);
if (!response.started()) {
if (!started) {
m_outcome = Outcome::Cancelled;
return m_outcome;
}

View file

@ -85,7 +85,7 @@ void Menu::dismiss()
int Menu::realize_menu(RefPtr<Action> default_action)
{
unrealize_menu();
m_menu_id = WindowServerConnection::the().create_menu(m_name).menu_id();
m_menu_id = WindowServerConnection::the().create_menu(m_name);
dbgln_if(MENU_DEBUG, "GUI::Menu::realize_menu(): New menu ID: {}", m_menu_id);
VERIFY(m_menu_id > 0);

View file

@ -30,7 +30,7 @@ Menu& Menubar::add_menu(String name)
int Menubar::realize_menubar()
{
return WindowServerConnection::the().create_menubar().menubar_id();
return WindowServerConnection::the().create_menubar();
}
void Menubar::unrealize_menubar()

View file

@ -119,7 +119,7 @@ void Window::show()
auto* parent_window = find_parent_window();
auto response = WindowServerConnection::the().create_window(
m_window_id = WindowServerConnection::the().create_window(
m_rect_when_windowless,
!m_moved_by_client,
m_has_alpha_channel,
@ -138,7 +138,6 @@ void Window::show()
(i32)m_window_type,
m_title_when_windowless,
parent_window ? parent_window->window_id() : 0);
m_window_id = response.window_id();
m_visible = true;
apply_icon();
@ -178,10 +177,10 @@ void Window::hide()
{
if (!is_visible())
return;
auto response = WindowServerConnection::the().destroy_window(m_window_id);
auto destroyed_window_ids = WindowServerConnection::the().destroy_window(m_window_id);
server_did_destroy();
for (auto child_window_id : response.destroyed_window_ids()) {
for (auto child_window_id : destroyed_window_ids) {
if (auto* window = Window::from_window_id(child_window_id)) {
window->server_did_destroy();
}
@ -212,20 +211,20 @@ String Window::title() const
{
if (!is_visible())
return m_title_when_windowless;
return WindowServerConnection::the().get_window_title(m_window_id).title();
return WindowServerConnection::the().get_window_title(m_window_id);
}
Gfx::IntRect Window::applet_rect_on_screen() const
{
VERIFY(m_window_type == WindowType::Applet);
return WindowServerConnection::the().get_applet_rect_on_screen(m_window_id).rect();
return WindowServerConnection::the().get_applet_rect_on_screen(m_window_id);
}
Gfx::IntRect Window::rect() const
{
if (!is_visible())
return m_rect_when_windowless;
return WindowServerConnection::the().get_window_rect(m_window_id).rect();
return WindowServerConnection::the().get_window_rect(m_window_id);
}
void Window::set_rect(const Gfx::IntRect& a_rect)
@ -240,7 +239,7 @@ void Window::set_rect(const Gfx::IntRect& a_rect)
m_main_widget->resize(m_rect_when_windowless.size());
return;
}
auto window_rect = WindowServerConnection::the().set_window_rect(m_window_id, a_rect).rect();
auto window_rect = WindowServerConnection::the().set_window_rect(m_window_id, a_rect);
if (m_back_store && m_back_store->size() != window_rect.size())
m_back_store = nullptr;
if (m_front_store && m_front_store->size() != window_rect.size())
@ -254,7 +253,7 @@ Gfx::IntSize Window::minimum_size() const
if (!is_visible())
return m_minimum_size_when_windowless;
return WindowServerConnection::the().get_window_minimum_size(m_window_id).size();
return WindowServerConnection::the().get_window_minimum_size(m_window_id);
}
void Window::set_minimum_size(const Gfx::IntSize& size)
@ -904,7 +903,7 @@ bool Window::is_maximized() const
if (!is_visible())
return false;
return WindowServerConnection::the().is_maximized(m_window_id).maximized();
return WindowServerConnection::the().is_maximized(m_window_id);
}
void Window::schedule_relayout()
@ -1084,7 +1083,7 @@ bool Window::is_modified() const
{
if (!m_window_id)
return false;
return WindowServerConnection::the().is_window_modified(m_window_id).modified();
return WindowServerConnection::the().is_window_modified(m_window_id);
}
void Window::set_modified(bool modified)

View file

@ -21,11 +21,6 @@ void RequestClient::handshake()
greet();
}
bool RequestClient::is_supported_protocol(const String& protocol)
{
return IPCProxy::is_supported_protocol(protocol).supported();
}
template<typename RequestHashMapTraits>
RefPtr<Request> RequestClient::start_request(const String& method, const String& url, const HashMap<String, String, RequestHashMapTraits>& request_headers, ReadonlyBytes request_body)
{
@ -49,14 +44,14 @@ bool RequestClient::stop_request(Badge<Request>, Request& request)
{
if (!m_requests.contains(request.id()))
return false;
return IPCProxy::stop_request(request.id()).success();
return IPCProxy::stop_request(request.id());
}
bool RequestClient::set_certificate(Badge<Request>, Request& request, String certificate, String key)
{
if (!m_requests.contains(request.id()))
return false;
return IPCProxy::set_certificate(request.id(), move(certificate), move(key)).success();
return IPCProxy::set_certificate(request.id(), move(certificate), move(key));
}
void RequestClient::request_finished(i32 request_id, bool success, u32 total_size)

View file

@ -23,7 +23,6 @@ class RequestClient
public:
virtual void handshake() override;
bool is_supported_protocol(const String&);
template<typename RequestHashMapTraits = Traits<String>>
RefPtr<Request> start_request(const String& method, const String& url, const HashMap<String, String, RequestHashMapTraits>& request_headers = {}, ReadonlyBytes request_body = {});

View file

@ -25,8 +25,7 @@ RefPtr<WebSocket> WebSocketClient::connect(const URL& url, const String& origin,
IPC::Dictionary header_dictionary;
for (auto& it : request_headers)
header_dictionary.add(it.key, it.value);
auto response = IPCProxy::connect(url, origin, protocols, extensions, header_dictionary);
auto connection_id = response.connection_id();
auto connection_id = IPCProxy::connect(url, origin, protocols, extensions, header_dictionary);
if (connection_id < 0)
return nullptr;
auto connection = WebSocket::create_from_id({}, *this, connection_id);
@ -38,7 +37,7 @@ u32 WebSocketClient::ready_state(Badge<WebSocket>, WebSocket& connection)
{
if (!m_connections.contains(connection.id()))
return (u32)WebSocket::ReadyState::Closed;
return IPCProxy::ready_state(connection.id()).ready_state();
return IPCProxy::ready_state(connection.id());
}
void WebSocketClient::send(Badge<WebSocket>, WebSocket& connection, ByteBuffer data, bool is_text)
@ -59,7 +58,7 @@ bool WebSocketClient::set_certificate(Badge<WebSocket>, WebSocket& connection, S
{
if (!m_connections.contains(connection.id()))
return false;
return IPCProxy::set_certificate(connection.id(), move(certificate), move(key)).success();
return IPCProxy::set_certificate(connection.id(), move(certificate), move(key));
}
void WebSocketClient::connected(i32 connection_id)