mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-05-03 13:02:09 +02:00
LibWeb: Serialize external content surface clears
Lock the shared Skia backend context before clearing an external content back store. Nested navigables render through PublishToExternalContent, and that clear ran outside the locking used by normal display list playback. This allowed multiple renderer threads to enter the same Ganesh context concurrently and trip Skia's SingleOwner checks during painting.
This commit is contained in:
committed by
Jelle Raaijmakers
parent
149ac3e674
commit
ff5273084d
Notes:
github-actions[bot]
2026-04-13 10:27:23 +00:00
Author: https://github.com/awesomekling Commit: https://github.com/LadybirdBrowser/ladybird/commit/ff5273084d1 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/8888 Reviewed-by: https://github.com/gmta ✅
@@ -209,7 +209,9 @@ public:
|
||||
if (should_clear_back_store) {
|
||||
// Embedded navigables leave their PaintConfig canvas unfilled, so double-buffered back stores
|
||||
// must be cleared before repainting.
|
||||
m_backing_stores.back_store->lock_context();
|
||||
m_backing_stores.back_store->canvas().clear(SK_ColorTRANSPARENT);
|
||||
m_backing_stores.back_store->unlock_context();
|
||||
}
|
||||
m_skia_player->execute(*m_cached_display_list, m_cached_scroll_state_snapshot, *m_backing_stores.back_store);
|
||||
i32 rendered_bitmap_id = m_backing_stores.back_bitmap_id;
|
||||
|
||||
Reference in New Issue
Block a user