From e7ece774a2227f938b7eec8767b11bc78d9e2135 Mon Sep 17 00:00:00 2001 From: Andrew Kaster Date: Wed, 26 Jun 2024 12:54:57 -0600 Subject: [PATCH] ImageDecoder: Register with mach server on macOS This allows viewing the resource usage in the task manager widget --- Ladybird/HelperProcess.cpp | 8 +++++++- Ladybird/ImageDecoder/main.cpp | 16 +++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/Ladybird/HelperProcess.cpp b/Ladybird/HelperProcess.cpp index 6c96be90dc..d577f4c123 100644 --- a/Ladybird/HelperProcess.cpp +++ b/Ladybird/HelperProcess.cpp @@ -122,7 +122,13 @@ ErrorOr> launch_web_content_process( ErrorOr> launch_image_decoder_process(ReadonlySpan candidate_image_decoder_paths) { - return launch_server_process("ImageDecoder"sv, candidate_image_decoder_paths, {}, RegisterWithProcessManager::Yes, Ladybird::EnableCallgrindProfiling::No); + Vector arguments; + if (auto server = mach_server_name(); server.has_value()) { + arguments.append("--mach-server-name"sv); + arguments.append(server.value()); + } + + return launch_server_process("ImageDecoder"sv, candidate_image_decoder_paths, arguments, RegisterWithProcessManager::Yes, Ladybird::EnableCallgrindProfiling::No); } ErrorOr> launch_web_worker_process(ReadonlySpan candidate_web_worker_paths, NonnullRefPtr request_client) diff --git a/Ladybird/ImageDecoder/main.cpp b/Ladybird/ImageDecoder/main.cpp index 5ccfb9314b..983b2ce20c 100644 --- a/Ladybird/ImageDecoder/main.cpp +++ b/Ladybird/ImageDecoder/main.cpp @@ -12,12 +12,26 @@ #include #include -ErrorOr serenity_main(Main::Arguments) +#if defined(AK_OS_MACOS) +# include +#endif + +ErrorOr serenity_main(Main::Arguments arguments) { AK::set_rich_debug_enabled(true); + Core::ArgsParser args_parser; + StringView mach_server_name; + args_parser.add_option(mach_server_name, "Mach server name", "mach-server-name", 0, "mach_server_name"); + args_parser.parse(arguments); + Core::EventLoop event_loop; +#if defined(AK_OS_MACOS) + if (!mach_server_name.is_empty()) + Core::Platform::register_with_mach_server(mach_server_name); +#endif + auto client = TRY(IPC::take_over_accepted_client_from_system_server()); return event_loop.exec();