Chromium Code Reviews| Index: third_party/WebKit/Source/modules/mediacapturefromelement/TimedCanvasDrawListener.cpp |
| diff --git a/third_party/WebKit/Source/modules/mediacapturefromelement/TimedCanvasDrawListener.cpp b/third_party/WebKit/Source/modules/mediacapturefromelement/TimedCanvasDrawListener.cpp |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..a7257c9b84ccebce45c78180dcf33af9cd981620 |
| --- /dev/null |
| +++ b/third_party/WebKit/Source/modules/mediacapturefromelement/TimedCanvasDrawListener.cpp |
| @@ -0,0 +1,49 @@ |
| +// Copyright 2015 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "config.h" |
| +#include "modules/mediacapturefromelement/TimedCanvasDrawListener.h" |
| + |
| +#include "platform/Task.h" |
| +#include "public/platform/Platform.h" |
| +#include "public/platform/WebSkImage.h" |
| +#include "public/platform/WebTaskRunner.h" |
| +#include "public/platform/WebTraceLocation.h" |
| + |
| +namespace blink { |
| + |
| +// static |
| +TimedCanvasDrawListener* TimedCanvasDrawListener::create(const PassOwnPtr<WebCanvasCaptureHandler>& handler, double frameRate) |
| +{ |
| + return new TimedCanvasDrawListener(handler, frameRate); |
| +} |
| + |
| +bool TimedCanvasDrawListener::needsNewFrame() const |
| +{ |
| + if (m_requestFrame) { |
| + return CanvasDrawListener::needsNewFrame(); |
|
esprehn
2015/12/11 10:38:24
return m_requestFrame && CanvasDrawListener::needs
emircan
2015/12/11 19:25:16
Done.
|
| + } |
| + return false; |
| +} |
| + |
| +void TimedCanvasDrawListener::sendNewFrame(const WTF::PassRefPtr<SkImage>& image) |
| +{ |
| + m_requestFrame = false; |
| + Platform::current()->currentThread()->taskRunner()->postDelayedTask(BLINK_FROM_HERE, new Task(bind(&TimedCanvasDrawListener::requestNewFrame, this)), m_frameInterval); |
|
esprehn
2015/12/11 10:38:24
I have to admit this feels suuuper weird. It means
emircan
2015/12/11 19:25:16
I totally see your point. I am going to explain it
|
| + CanvasDrawListener::sendNewFrame(image); |
| +} |
| + |
| +TimedCanvasDrawListener::TimedCanvasDrawListener(const PassOwnPtr<WebCanvasCaptureHandler>& handler, double frameRate) |
| + :CanvasDrawListener(handler) |
|
esprehn
2015/12/11 10:38:24
missing space, also lets move this to the top near
emircan
2015/12/11 19:25:16
Done.
|
| +{ |
| + m_frameInterval = 1000 / frameRate; |
| + m_requestFrame = true; |
| +} |
| + |
| +void TimedCanvasDrawListener::requestNewFrame() |
| +{ |
| + m_requestFrame = true; |
| +} |
| + |
| +} // namespace blink |