mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-10-05 17:49:16 +03:00
Everywhere: Hand pid of new process to client in launch_server_process()
Allows WebContentClient to get pid of WebContent process right after creation, so there is no window between forking and notify_process_information() IPC response, when client doesn't know the pid.
This commit is contained in:
parent
3110411c60
commit
c46bea479c
Notes:
sideshowbarker
2024-07-17 10:08:28 +09:00
Author: https://github.com/kalenikaliaksandr Commit: https://github.com/LadybirdBrowser/ladybird/commit/c46bea479c Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/233 Reviewed-by: https://github.com/ADKaster Reviewed-by: https://github.com/bugaevc
@ -48,6 +48,9 @@ static ErrorOr<NonnullRefPtr<ClientType>> launch_server_process(
|
||||
if (!result.is_error()) {
|
||||
auto process = result.release_value();
|
||||
|
||||
if constexpr (requires { process.client->set_pid(pid_t {}); })
|
||||
process.client->set_pid(process.process.pid());
|
||||
|
||||
if (register_with_process_manager == RegisterWithProcessManager::Yes)
|
||||
WebView::ProcessManager::the().add_process(WebView::process_type_from_name(server_name), process.process.pid());
|
||||
|
||||
|
@ -34,13 +34,6 @@ void WebContentClient::unregister_view(u64 page_id)
|
||||
m_views.remove(page_id);
|
||||
}
|
||||
|
||||
void WebContentClient::notify_process_information(WebView::ProcessHandle const& handle)
|
||||
{
|
||||
dbgln_if(SPAM_DEBUG, "handle: WebContentClient::NotifyProcessInformation! pid={}", handle.pid);
|
||||
ProcessManager::the().add_process(ProcessType::WebContent, handle.pid);
|
||||
m_process_handle = handle;
|
||||
}
|
||||
|
||||
void WebContentClient::did_paint(u64 page_id, Gfx::IntRect const& rect, i32 bitmap_id)
|
||||
{
|
||||
if (auto view = view_for_page_id(page_id); view.has_value())
|
||||
|
@ -33,10 +33,11 @@ public:
|
||||
|
||||
Function<void()> on_web_content_process_crash;
|
||||
|
||||
void set_pid(pid_t pid) { m_process_handle.pid = pid; }
|
||||
|
||||
private:
|
||||
virtual void die() override;
|
||||
|
||||
virtual void notify_process_information(WebView::ProcessHandle const&) override;
|
||||
virtual void did_paint(u64 page_id, Gfx::IntRect const&, i32) override;
|
||||
virtual void did_finish_loading(u64 page_id, URL::URL const&) override;
|
||||
virtual void did_request_navigate_back(u64 page_id) override;
|
||||
|
@ -55,7 +55,6 @@ ConnectionFromClient::ConnectionFromClient(NonnullOwnPtr<Core::LocalSocket> sock
|
||||
, m_page_host(PageHost::create(*this))
|
||||
{
|
||||
m_input_event_queue_timer = Web::Platform::Timer::create_single_shot(0, [this] { process_next_input_event(); });
|
||||
async_notify_process_information({ ::getpid() });
|
||||
}
|
||||
|
||||
ConnectionFromClient::~ConnectionFromClient() = default;
|
||||
|
@ -17,8 +17,6 @@
|
||||
|
||||
endpoint WebContentClient
|
||||
{
|
||||
notify_process_information(WebView::ProcessHandle handle) =|
|
||||
|
||||
did_start_loading(u64 page_id, URL::URL url, bool is_redirect) =|
|
||||
did_finish_loading(u64 page_id, URL::URL url) =|
|
||||
did_request_navigate_back(u64 page_id) =|
|
||||
|
Loading…
Reference in New Issue
Block a user