mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-04-25 17:25:08 +02:00
Everywhere: Send IOSurface backing stores via main IPC route on macOS
Now that LibIPC uses Mach ports for transport on macOS, IOSurface port rights can be sent as regular IPC message attachments instead of through a separate ad-hoc Mach message side-channel. Introduce Web::SharedBackingStore that wraps either a MachPort (macOS) or ShareableBitmap (other platforms) with IPC encode/decode support, unifying backing store allocation into the existing did_allocate_backing_stores IPC message.
This commit is contained in:
committed by
Alexander Kalenik
parent
2b3e068da5
commit
3cb644500e
Notes:
github-actions[bot]
2026-03-23 22:23:37 +00:00
Author: https://github.com/kalenikaliaksandr Commit: https://github.com/LadybirdBrowser/ladybird/commit/3cb644500ed Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/8595
@@ -726,9 +726,9 @@ void PageClient::page_did_change_audio_play_state(Web::HTML::AudioPlayState play
|
||||
client().async_did_change_audio_play_state(m_id, play_state);
|
||||
}
|
||||
|
||||
void PageClient::page_did_allocate_backing_stores(i32 front_bitmap_id, Gfx::ShareableBitmap front_bitmap, i32 back_bitmap_id, Gfx::ShareableBitmap back_bitmap)
|
||||
void PageClient::page_did_allocate_backing_stores(i32 front_bitmap_id, Web::SharedBackingStore front_backing_store, i32 back_bitmap_id, Web::SharedBackingStore back_backing_store)
|
||||
{
|
||||
client().async_did_allocate_backing_stores(m_id, front_bitmap_id, front_bitmap, back_bitmap_id, back_bitmap);
|
||||
client().async_did_allocate_backing_stores(m_id, front_bitmap_id, move(front_backing_store), back_bitmap_id, move(back_backing_store));
|
||||
}
|
||||
|
||||
Web::PageClient::WorkerAgentResponse PageClient::request_worker_agent(Web::Bindings::AgentType type)
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include <LibWeb/HTML/AudioPlayState.h>
|
||||
#include <LibWeb/HTML/FileFilter.h>
|
||||
#include <LibWeb/Page/Page.h>
|
||||
#include <LibWeb/Page/SharedBackingStore.h>
|
||||
#include <LibWeb/Painting/BackingStoreManager.h>
|
||||
#include <LibWeb/PixelUnits.h>
|
||||
#include <LibWeb/StorageAPI/StorageEndpoint.h>
|
||||
@@ -187,7 +188,7 @@ private:
|
||||
virtual void page_did_insert_clipboard_entry(Web::Clipboard::SystemClipboardRepresentation const&, StringView presentation_style) override;
|
||||
virtual void page_did_request_clipboard_entries(u64 request_id) override;
|
||||
virtual void page_did_change_audio_play_state(Web::HTML::AudioPlayState) override;
|
||||
virtual void page_did_allocate_backing_stores(i32 front_bitmap_id, Gfx::ShareableBitmap front_bitmap, i32 back_bitmap_id, Gfx::ShareableBitmap back_bitmap) override;
|
||||
virtual void page_did_allocate_backing_stores(i32 front_bitmap_id, Web::SharedBackingStore front_backing_store, i32 back_bitmap_id, Web::SharedBackingStore back_backing_store) override;
|
||||
virtual WorkerAgentResponse request_worker_agent(Web::Bindings::AgentType) override;
|
||||
virtual void page_did_mutate_dom(FlyString const& type, Web::DOM::Node const& target, Web::DOM::NodeList& added_nodes, Web::DOM::NodeList& removed_nodes, GC::Ptr<Web::DOM::Node> previous_sibling, GC::Ptr<Web::DOM::Node> next_sibling, Optional<String> const& attribute_name) override;
|
||||
virtual void page_did_paint(Gfx::IntRect const& content_rect, i32 bitmap_id) override;
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <LibWeb/HTML/WebViewHints.h>
|
||||
#include <LibWeb/Page/EventResult.h>
|
||||
#include <LibWeb/Page/Page.h>
|
||||
#include <LibWeb/Page/SharedBackingStore.h>
|
||||
#include <LibWebView/Attribute.h>
|
||||
#include <LibWebView/ConsoleOutput.h>
|
||||
#include <LibWebView/DOMNodeProperties.h>
|
||||
@@ -114,7 +115,7 @@ endpoint WebContentClient
|
||||
did_request_clipboard_entries(u64 page_id, u64 request_id) =|
|
||||
|
||||
did_update_navigation_buttons_state(u64 page_id, bool back_enabled, bool forward_enabled) =|
|
||||
did_allocate_backing_stores(u64 page_id, i32 front_bitmap_id, Gfx::ShareableBitmap front_bitmap, i32 back_bitmap_id, Gfx::ShareableBitmap back_bitmap) =|
|
||||
did_allocate_backing_stores(u64 page_id, i32 front_bitmap_id, Web::SharedBackingStore front_backing_store, i32 back_bitmap_id, Web::SharedBackingStore back_backing_store) =|
|
||||
|
||||
did_change_audio_play_state(u64 page_id, Web::HTML::AudioPlayState play_state) =|
|
||||
|
||||
|
||||
@@ -253,7 +253,6 @@ ErrorOr<int> ladybird_main(Main::Arguments arguments)
|
||||
#if defined(AK_OS_MACOS)
|
||||
auto browser_port = TRY(Core::MachPort::look_up_from_bootstrap_server(ByteString { mach_server_name }));
|
||||
auto transport_ports = TRY(IPC::bootstrap_transport_from_server_port(browser_port));
|
||||
Web::Painting::BackingStoreManager::set_browser_mach_port(move(browser_port));
|
||||
auto webcontent_client = WebContent::ConnectionFromClient::construct(
|
||||
make<IPC::Transport>(move(transport_ports.receive_right), move(transport_ports.send_right)));
|
||||
#else
|
||||
|
||||
Reference in New Issue
Block a user