Commit d77322c6 authored by Fernando Serboncini's avatar Fernando Serboncini Committed by Commit Bot

Use Worker.RAF ACK instead of Dispatcher on OffscreenCanvas

Bug: 995235
Change-Id: I88c771e300577eea4cae77fd233e1bd866359b7c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1829485
Commit-Queue: Fernando Serboncini <fserb@chromium.org>
Reviewed-by: default avatarKhushal <khushalsagar@chromium.org>
Cr-Commit-Position: refs/heads/master@{#701187}
parent 2375197a
...@@ -50,7 +50,7 @@ void WorkerAnimationFrameProvider::BeginFrame(const viz::BeginFrameArgs& args) { ...@@ -50,7 +50,7 @@ void WorkerAnimationFrameProvider::BeginFrame(const viz::BeginFrameArgs& args) {
"blink", "WorkerAnimationFrameProvider::RequestAnimationFrame", "blink", "WorkerAnimationFrameProvider::RequestAnimationFrame",
TRACE_ID_GLOBAL(args.trace_id), TRACE_EVENT_FLAG_FLOW_IN); TRACE_ID_GLOBAL(args.trace_id), TRACE_EVENT_FLAG_FLOW_IN);
{ {
OffscreenCanvas::ScopedInsideWorkerRAF inside_raf_scope; OffscreenCanvas::ScopedInsideWorkerRAF inside_raf_scope(args);
for (auto& offscreen_canvas : provider->offscreen_canvases_) { for (auto& offscreen_canvas : provider->offscreen_canvases_) {
inside_raf_scope.AddOffscreenCanvas(offscreen_canvas); inside_raf_scope.AddOffscreenCanvas(offscreen_canvas);
} }
......
...@@ -183,7 +183,8 @@ class CORE_EXPORT OffscreenCanvas final ...@@ -183,7 +183,8 @@ class CORE_EXPORT OffscreenCanvas final
STACK_ALLOCATED(); STACK_ALLOCATED();
public: public:
ScopedInsideWorkerRAF() {} ScopedInsideWorkerRAF(const viz::BeginFrameArgs& args)
: begin_frame_args_(args) {}
void AddOffscreenCanvas(OffscreenCanvas* canvas) { void AddOffscreenCanvas(OffscreenCanvas* canvas) {
DCHECK(!canvas->inside_worker_raf_); DCHECK(!canvas->inside_worker_raf_);
...@@ -195,11 +196,15 @@ class CORE_EXPORT OffscreenCanvas final ...@@ -195,11 +196,15 @@ class CORE_EXPORT OffscreenCanvas final
for (auto canvas : canvases_) { for (auto canvas : canvases_) {
DCHECK(canvas->inside_worker_raf_); DCHECK(canvas->inside_worker_raf_);
canvas->inside_worker_raf_ = false; canvas->inside_worker_raf_ = false;
if (canvas->frame_dispatcher_) {
canvas->frame_dispatcher_->ReplaceBeginFrameAck(begin_frame_args_);
}
canvas->PushFrameIfNeeded(); canvas->PushFrameIfNeeded();
} }
} }
private: private:
const viz::BeginFrameArgs& begin_frame_args_;
HeapVector<Member<OffscreenCanvas>> canvases_; HeapVector<Member<OffscreenCanvas>> canvases_;
}; };
......
...@@ -60,6 +60,9 @@ class PLATFORM_EXPORT CanvasResourceDispatcher ...@@ -60,6 +60,9 @@ class PLATFORM_EXPORT CanvasResourceDispatcher
const SkIRect& damage_rect, const SkIRect& damage_rect,
bool needs_vertical_flip, bool needs_vertical_flip,
bool is_opaque); bool is_opaque);
void ReplaceBeginFrameAck(const viz::BeginFrameArgs& args) {
current_begin_frame_ack_ = viz::BeginFrameAck(args, true);
}
void Reshape(const IntSize&); void Reshape(const IntSize&);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment