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

Unified Diff: remoting/client/plugin/pepper_video_renderer_3d.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
« no previous file with comments | « remoting/client/plugin/pepper_video_renderer_3d.h ('k') | remoting/client/software_video_renderer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/client/plugin/pepper_video_renderer_3d.cc
diff --git a/remoting/client/plugin/pepper_video_renderer_3d.cc b/remoting/client/plugin/pepper_video_renderer_3d.cc
index a40ebacc0aa6e2280fa716b5b750220bfb077302..720f3a24c8a2f92b63bc1833da8812cf38d5e69f 100644
--- a/remoting/client/plugin/pepper_video_renderer_3d.cc
+++ b/remoting/client/plugin/pepper_video_renderer_3d.cc
@@ -238,24 +238,24 @@ void PepperVideoRenderer3D::ProcessVideoPacket(scoped_ptr<VideoPacket> packet,
if (resolution_changed)
event_handler_->OnVideoSize(frame_size_, frame_dpi_);
- // Update the desktop shape region.
- webrtc::DesktopRegion desktop_shape;
+ // Process the frame shape, if supplied.
if (packet->has_use_desktop_shape()) {
- for (int i = 0; i < packet->desktop_shape_rects_size(); ++i) {
- Rect remoting_rect = packet->desktop_shape_rects(i);
- desktop_shape.AddRect(webrtc::DesktopRect::MakeXYWH(
- remoting_rect.x(), remoting_rect.y(),
- remoting_rect.width(), remoting_rect.height()));
+ if (packet->use_desktop_shape()) {
+ scoped_ptr<webrtc::DesktopRegion> shape(new webrtc::DesktopRegion);
+ for (int i = 0; i < packet->desktop_shape_rects_size(); ++i) {
+ Rect remoting_rect = packet->desktop_shape_rects(i);
+ shape->AddRect(webrtc::DesktopRect::MakeXYWH(
+ remoting_rect.x(), remoting_rect.y(), remoting_rect.width(),
+ remoting_rect.height()));
+ }
+ if (!frame_shape_ || !frame_shape_->Equals(*shape)) {
+ frame_shape_ = shape.Pass();
+ event_handler_->OnVideoShape(frame_shape_.get());
+ }
+ } else if (frame_shape_) {
+ frame_shape_ = nullptr;
+ event_handler_->OnVideoShape(nullptr);
}
- } else {
- // Fallback for the case when the host didn't include the desktop shape.
- desktop_shape =
- webrtc::DesktopRegion(webrtc::DesktopRect::MakeSize(frame_size_));
- }
-
- if (!desktop_shape_.Equals(desktop_shape)) {
- desktop_shape_.Swap(&desktop_shape);
- event_handler_->OnVideoShape(desktop_shape_);
}
// Report the dirty region, for debugging, if requested.
« no previous file with comments | « remoting/client/plugin/pepper_video_renderer_3d.h ('k') | remoting/client/software_video_renderer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698