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 711c2104b702cf083f78a4b4b337286fb20eb91e..40ed34b97a8ffafb6068759ae8cf01cdb2accc83 100644 |
--- a/remoting/client/plugin/pepper_video_renderer_3d.cc |
+++ b/remoting/client/plugin/pepper_video_renderer_3d.cc |
@@ -234,24 +234,27 @@ 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 |
Sergey Ulanov
2015/07/10 21:51:43
nit: add . at the end
Wez
2015/07/13 19:56:24
Done.
|
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()) { |
+ webrtc::DesktopRegion shape; |
+ 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_ = make_scoped_ptr(new webrtc::DesktopRegion); |
+ if (!frame_shape_->Equals(shape)) { |
+ frame_shape_->Swap(&shape); |
+ event_handler_->OnVideoShape(*frame_shape_); |
+ } |
+ } else if (frame_shape_) { |
+ frame_shape_.reset(); |
Sergey Ulanov
2015/07/10 21:51:43
nit: You are using frame_shape_ = make_scoped_ptr(
Wez
2015/07/13 19:56:24
Done.
|
+ event_handler_->OnVideoShape( |
+ webrtc::DesktopRegion(webrtc::DesktopRect::MakeSize(frame_size_))); |
} |
- } 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. |