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

Side by Side Diff: remoting/client/plugin/chromoting_instance.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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "remoting/client/plugin/chromoting_instance.h" 5 #include "remoting/client/plugin/chromoting_instance.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #if defined(OS_NACL) 10 #if defined(OS_NACL)
(...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after
431 scoped_ptr<base::DictionaryValue> data(new base::DictionaryValue()); 431 scoped_ptr<base::DictionaryValue> data(new base::DictionaryValue());
432 data->SetInteger("width", size.width()); 432 data->SetInteger("width", size.width());
433 data->SetInteger("height", size.height()); 433 data->SetInteger("height", size.height());
434 if (dpi.x()) 434 if (dpi.x())
435 data->SetInteger("x_dpi", dpi.x()); 435 data->SetInteger("x_dpi", dpi.x());
436 if (dpi.y()) 436 if (dpi.y())
437 data->SetInteger("y_dpi", dpi.y()); 437 data->SetInteger("y_dpi", dpi.y());
438 PostLegacyJsonMessage("onDesktopSize", data.Pass()); 438 PostLegacyJsonMessage("onDesktopSize", data.Pass());
439 } 439 }
440 440
441 void ChromotingInstance::OnVideoShape(const webrtc::DesktopRegion& shape) { 441 void ChromotingInstance::OnVideoShape(const webrtc::DesktopRegion* shape) {
442 if (desktop_shape_ && shape.Equals(*desktop_shape_)) 442 if ((shape && desktop_shape_ && shape->Equals(*desktop_shape_)) ||
443 (!shape && !desktop_shape_)) {
443 return; 444 return;
444
445 desktop_shape_.reset(new webrtc::DesktopRegion(shape));
446
447 scoped_ptr<base::ListValue> rects_value(new base::ListValue());
448 for (webrtc::DesktopRegion::Iterator i(shape); !i.IsAtEnd(); i.Advance()) {
449 const webrtc::DesktopRect& rect = i.rect();
450 scoped_ptr<base::ListValue> rect_value(new base::ListValue());
451 rect_value->AppendInteger(rect.left());
452 rect_value->AppendInteger(rect.top());
453 rect_value->AppendInteger(rect.width());
454 rect_value->AppendInteger(rect.height());
455 rects_value->Append(rect_value.release());
456 } 445 }
457 446
458 scoped_ptr<base::DictionaryValue> data(new base::DictionaryValue()); 447 scoped_ptr<base::DictionaryValue> shape_message(new base::DictionaryValue());
459 data->Set("rects", rects_value.release()); 448 if (shape) {
460 PostLegacyJsonMessage("onDesktopShape", data.Pass()); 449 desktop_shape_ = make_scoped_ptr(new webrtc::DesktopRegion(*shape));
450 scoped_ptr<base::ListValue> rects_value(new base::ListValue());
451 for (webrtc::DesktopRegion::Iterator i(*shape); !i.IsAtEnd(); i.Advance()) {
452 const webrtc::DesktopRect& rect = i.rect();
453 scoped_ptr<base::ListValue> rect_value(new base::ListValue());
454 rect_value->AppendInteger(rect.left());
455 rect_value->AppendInteger(rect.top());
456 rect_value->AppendInteger(rect.width());
457 rect_value->AppendInteger(rect.height());
458 rects_value->Append(rect_value.release());
459 }
460 shape_message->Set("rects", rects_value.release());
461 }
462
463 PostLegacyJsonMessage("onDesktopShape", shape_message.Pass());
461 } 464 }
462 465
463 void ChromotingInstance::OnVideoFrameDirtyRegion( 466 void ChromotingInstance::OnVideoFrameDirtyRegion(
464 const webrtc::DesktopRegion& dirty_region) { 467 const webrtc::DesktopRegion& dirty_region) {
465 scoped_ptr<base::ListValue> rects_value(new base::ListValue()); 468 scoped_ptr<base::ListValue> rects_value(new base::ListValue());
466 for (webrtc::DesktopRegion::Iterator i(dirty_region); !i.IsAtEnd(); 469 for (webrtc::DesktopRegion::Iterator i(dirty_region); !i.IsAtEnd();
467 i.Advance()) { 470 i.Advance()) {
468 const webrtc::DesktopRect& rect = i.rect(); 471 const webrtc::DesktopRect& rect = i.rect();
469 scoped_ptr<base::ListValue> rect_value(new base::ListValue()); 472 scoped_ptr<base::ListValue> rect_value(new base::ListValue());
470 rect_value->AppendInteger(rect.left()); 473 rect_value->AppendInteger(rect.left());
(...skipping 758 matching lines...) Expand 10 before | Expand all | Expand 10 after
1229 1232
1230 #if !defined(OS_NACL) 1233 #if !defined(OS_NACL)
1231 // Log messages are forwarded to the webapp only in PNaCl version of the 1234 // Log messages are forwarded to the webapp only in PNaCl version of the
1232 // plugin, so ProcessLogToUI() needs to be called explicitly in the non-PNaCl 1235 // plugin, so ProcessLogToUI() needs to be called explicitly in the non-PNaCl
1233 // version. 1236 // version.
1234 ProcessLogToUI(message); 1237 ProcessLogToUI(message);
1235 #endif // !defined(OS_NACL) 1238 #endif // !defined(OS_NACL)
1236 } 1239 }
1237 1240
1238 } // namespace remoting 1241 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/client/plugin/chromoting_instance.h ('k') | remoting/client/plugin/pepper_video_renderer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698