Chromium Code Reviews| 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. |