Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(364)

Unified Diff: remoting/client/plugin/pepper_video_renderer_2d.cc

Issue 1236663002: Allow shaped-desktop hosts to send shape only when it changes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix Pepper 2D renderer build Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: remoting/client/plugin/pepper_video_renderer_2d.cc
diff --git a/remoting/client/plugin/pepper_video_renderer_2d.cc b/remoting/client/plugin/pepper_video_renderer_2d.cc
index 678e829edccddad43c74d9a9aed9fcbd94de193f..e7d6f2449284c58b5fad5534d4edc9f3ea244a22 100644
--- a/remoting/client/plugin/pepper_video_renderer_2d.cc
+++ b/remoting/client/plugin/pepper_video_renderer_2d.cc
@@ -100,11 +100,11 @@ bool PepperVideoRenderer2D::Initialize(pp::Instance* instance,
instance_ = instance;
event_handler_ = event_handler;
- frame_consumer_proxy_ = new FrameConsumerProxy(
- context.main_task_runner(), weak_factory_.GetWeakPtr());
+ scoped_ptr<FrameConsumerProxy> frame_consumer_proxy =
+ make_scoped_ptr(new FrameConsumerProxy(weak_factory_.GetWeakPtr()));
software_video_renderer_.reset(new SoftwareVideoRenderer(
context.main_task_runner(), context.decode_task_runner(),
- frame_consumer_proxy_));
+ frame_consumer_proxy.Pass()));
return true;
}
@@ -207,7 +207,7 @@ void PepperVideoRenderer2D::ApplyBuffer(const webrtc::DesktopSize& view_size,
const webrtc::DesktopRect& clip_area,
webrtc::DesktopFrame* buffer,
const webrtc::DesktopRegion& region,
- const webrtc::DesktopRegion& shape) {
+ const webrtc::DesktopRegion* shape) {
DCHECK(CalledOnValidThread());
if (!frame_received_) {
@@ -216,15 +216,20 @@ void PepperVideoRenderer2D::ApplyBuffer(const webrtc::DesktopSize& view_size,
}
// We cannot use the data in the buffer if its dimensions don't match the
// current view size.
- // TODO(alexeypa): We could rescale and draw it (or even draw it without
- // rescaling) to reduce the perceived lag while we are waiting for
- // the properly scaled data.
if (!view_size_.equals(view_size)) {
FreeBuffer(buffer);
AllocateBuffers();
} else {
FlushBuffer(clip_area, buffer, region);
- event_handler_->OnVideoShape(shape);
+ if (shape) {
+ if (!source_shape_ || !source_shape_->Equals(*shape)) {
+ source_shape_ = make_scoped_ptr(new webrtc::DesktopRegion(*shape));
+ event_handler_->OnVideoShape(source_shape_.get());
+ }
+ } else if (source_shape_) {
+ source_shape_ = nullptr;
+ event_handler_->OnVideoShape(nullptr);
+ }
}
}
« no previous file with comments | « remoting/client/plugin/pepper_video_renderer_2d.h ('k') | remoting/client/plugin/pepper_video_renderer_3d.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698