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

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

Powered by Google App Engine
This is Rietveld 408576698