mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-02-04 04:58:14 +01:00
Restore the CefRenderHandler::OnScrollOffsetChanged callback (fixes issue #2810)
This commit is contained in:
parent
24c2f2fa38
commit
e6047bd54b
@ -404,16 +404,18 @@ void CefRenderWidgetHostViewOSR::Show() {
|
|||||||
if (!video_consumer_) {
|
if (!video_consumer_) {
|
||||||
video_consumer_.reset(new CefVideoConsumerOSR(this));
|
video_consumer_.reset(new CefVideoConsumerOSR(this));
|
||||||
UpdateFrameRate();
|
UpdateFrameRate();
|
||||||
|
|
||||||
// Call OnRenderFrameMetadataChangedAfterActivation for every frame.
|
|
||||||
content::RenderFrameMetadataProviderImpl* provider =
|
|
||||||
content::RenderWidgetHostImpl::From(render_widget_host_)
|
|
||||||
->render_frame_metadata_provider();
|
|
||||||
provider->ReportAllFrameSubmissionsForTesting(true);
|
|
||||||
} else {
|
} else {
|
||||||
video_consumer_->SetActive(true);
|
video_consumer_->SetActive(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (render_widget_host_) {
|
||||||
|
// Call OnRenderFrameMetadataChangedAfterActivation for every frame.
|
||||||
|
content::RenderFrameMetadataProviderImpl* provider =
|
||||||
|
content::RenderWidgetHostImpl::From(render_widget_host_)
|
||||||
|
->render_frame_metadata_provider();
|
||||||
|
provider->ReportAllFrameSubmissionsForTesting(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CefRenderWidgetHostViewOSR::Hide() {
|
void CefRenderWidgetHostViewOSR::Hide() {
|
||||||
@ -924,13 +926,35 @@ viz::FrameSinkId CefRenderWidgetHostViewOSR::GetRootFrameSinkId() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void CefRenderWidgetHostViewOSR::OnRenderFrameMetadataChangedAfterActivation() {
|
void CefRenderWidgetHostViewOSR::OnRenderFrameMetadataChangedAfterActivation() {
|
||||||
|
auto metadata =
|
||||||
|
host_->render_frame_metadata_provider()->LastRenderFrameMetadata();
|
||||||
|
|
||||||
if (video_consumer_) {
|
if (video_consumer_) {
|
||||||
// Need to wait for the first frame of the new size before calling
|
// Need to wait for the first frame of the new size before calling
|
||||||
// SizeChanged. Otherwise, the video frame will be letterboxed.
|
// SizeChanged. Otherwise, the video frame will be letterboxed.
|
||||||
auto metadata =
|
|
||||||
host_->render_frame_metadata_provider()->LastRenderFrameMetadata();
|
|
||||||
video_consumer_->SizeChanged(metadata.viewport_size_in_pixels);
|
video_consumer_->SizeChanged(metadata.viewport_size_in_pixels);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gfx::Vector2dF root_scroll_offset;
|
||||||
|
if (metadata.root_scroll_offset) {
|
||||||
|
root_scroll_offset = *metadata.root_scroll_offset;
|
||||||
|
}
|
||||||
|
if (root_scroll_offset != last_scroll_offset_) {
|
||||||
|
last_scroll_offset_ = root_scroll_offset;
|
||||||
|
|
||||||
|
if (!is_scroll_offset_changed_pending_) {
|
||||||
|
is_scroll_offset_changed_pending_ = true;
|
||||||
|
|
||||||
|
// Send the notification asynchronously.
|
||||||
|
CEF_POST_TASK(
|
||||||
|
CEF_UIT,
|
||||||
|
base::Bind(&CefRenderWidgetHostViewOSR::OnScrollOffsetChanged,
|
||||||
|
weak_ptr_factory_.GetWeakPtr()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
content::RenderWidgetHostViewBase::
|
||||||
|
OnRenderFrameMetadataChangedAfterActivation();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<content::SyntheticGestureTarget>
|
std::unique_ptr<content::SyntheticGestureTarget>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user