From 7e7d4ac29bbbfd05673792271c9f4af509ebdb62 Mon Sep 17 00:00:00 2001 From: v00863305 Date: Fri, 26 Jan 2024 13:09:16 +0300 Subject: [PATCH] Track the last local surface ID from frame metadata Restore tracking of the latest local surface ID (render frame metadata) for OHOS platform to not do update of visual properties if local surface ID wasn't changed during renderer frame submission. Root case of initial issue is related to invalidation of renderer local surface ID due unexpected frame eviction (see CEF component commit). https://gitee.com/openharmony-tpc/chromium_cef/pulls/518 - new local surface ID allocation - synchronize visual properties (-> to renderer) - local surface invalidation (unexpected frame eviction) surface will be detached from UI compositor (white screen content) - synchronize visual properties (<- from renderer frame submission) surface will be attached back to UI compositor Signed-off-by: Volykhin Andrei Change-Id: If69321a1d646300ecfaf93db1d44bc8b4ee26468 --- .../renderer_host/render_frame_metadata_provider_impl.cc | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/content/browser/renderer_host/render_frame_metadata_provider_impl.cc b/content/browser/renderer_host/render_frame_metadata_provider_impl.cc index c10b2dfc7d..49ab08b466 100644 --- a/content/browser/renderer_host/render_frame_metadata_provider_impl.cc +++ b/content/browser/renderer_host/render_frame_metadata_provider_impl.cc @@ -120,10 +120,8 @@ void RenderFrameMetadataProviderImpl::OnRenderFrameMetadataChanged( return; } } -// ohos: fix white screen when web instance over 5. -#if !BUILDFLAG(IS_OHOS) + if (metadata.local_surface_id != last_local_surface_id_) { -#endif last_local_surface_id_ = metadata.local_surface_id; for (Observer& observer : observers_) { observer.OnLocalSurfaceIdChanged(metadata); @@ -131,9 +129,7 @@ void RenderFrameMetadataProviderImpl::OnRenderFrameMetadataChanged( return; } } -#if !BUILDFLAG(IS_OHOS) } -#endif if (!frame_token) return; -- Gitee