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. |