| Index: media/video/capture/screen/screen_capturer_helper.cc
|
| diff --git a/media/video/capture/screen/screen_capturer_helper.cc b/media/video/capture/screen/screen_capturer_helper.cc
|
| index 2f4534260c9cb0190481a9a3115988b4f6dce087..e85cf3b7ddb5bd7ad78005ff167a1c3a3fa145fd 100644
|
| --- a/media/video/capture/screen/screen_capturer_helper.cc
|
| +++ b/media/video/capture/screen/screen_capturer_helper.cc
|
| @@ -12,7 +12,6 @@
|
| namespace media {
|
|
|
| ScreenCapturerHelper::ScreenCapturerHelper() :
|
| - size_most_recent_(SkISize::Make(0, 0)),
|
| log_grid_size_(0) {
|
| }
|
|
|
| @@ -25,33 +24,43 @@ void ScreenCapturerHelper::ClearInvalidRegion() {
|
| }
|
|
|
| void ScreenCapturerHelper::InvalidateRegion(
|
| - const SkRegion& invalid_region) {
|
| + const webrtc::DesktopRegion& invalid_region) {
|
| base::AutoLock auto_invalid_region_lock(invalid_region_lock_);
|
| - invalid_region_.op(invalid_region, SkRegion::kUnion_Op);
|
| + for (webrtc::DesktopRegion::Iterator it(invalid_region);
|
| + !it.IsAtEnd(); it.Advance()) {
|
| + invalid_region_.op(SkIRect::MakeLTRB(it.rect().left(), it.rect().top(),
|
| + it.rect().right(), it.rect().bottom()),
|
| + SkRegion::kUnion_Op);
|
| + }
|
| }
|
|
|
| -void ScreenCapturerHelper::InvalidateScreen(const SkISize& size) {
|
| +void ScreenCapturerHelper::InvalidateScreen(const webrtc::DesktopSize& size) {
|
| base::AutoLock auto_invalid_region_lock(invalid_region_lock_);
|
| invalid_region_.op(SkIRect::MakeWH(size.width(), size.height()),
|
| SkRegion::kUnion_Op);
|
| }
|
|
|
| -void ScreenCapturerHelper::InvalidateFullScreen() {
|
| - if (!size_most_recent_.isZero())
|
| - InvalidateScreen(size_most_recent_);
|
| -}
|
| -
|
| -void ScreenCapturerHelper::SwapInvalidRegion(SkRegion* invalid_region) {
|
| +void ScreenCapturerHelper::TakeInvalidRegion(
|
| + webrtc::DesktopRegion* invalid_region) {
|
| + SkRegion sk_invalid_region;
|
| {
|
| base::AutoLock auto_invalid_region_lock(invalid_region_lock_);
|
| - invalid_region->swap(invalid_region_);
|
| + sk_invalid_region.swap(invalid_region_);
|
| }
|
| +
|
| if (log_grid_size_ > 0) {
|
| scoped_ptr<SkRegion> expanded_region(
|
| - ExpandToGrid(*invalid_region, log_grid_size_));
|
| - invalid_region->swap(*expanded_region);
|
| - invalid_region->op(SkRegion(SkIRect::MakeSize(size_most_recent_)),
|
| - SkRegion::kIntersect_Op);
|
| + ExpandToGrid(sk_invalid_region, log_grid_size_));
|
| + sk_invalid_region.swap(*expanded_region);
|
| + sk_invalid_region.op(SkIRect::MakeWH(size_most_recent_.width(),
|
| + size_most_recent_.height()),
|
| + SkRegion::kIntersect_Op);
|
| + }
|
| + invalid_region->Clear();
|
| + for (SkRegion::Iterator it(sk_invalid_region); !it.done(); it.next()) {
|
| + invalid_region->AddRect(webrtc::DesktopRect::MakeLTRB(
|
| + it.rect().left(), it.rect().top(),
|
| + it.rect().right(), it.rect().bottom()));
|
| }
|
| }
|
|
|
| @@ -59,11 +68,12 @@ void ScreenCapturerHelper::SetLogGridSize(int log_grid_size) {
|
| log_grid_size_ = log_grid_size;
|
| }
|
|
|
| -const SkISize& ScreenCapturerHelper::size_most_recent() const {
|
| +const webrtc::DesktopSize& ScreenCapturerHelper::size_most_recent() const {
|
| return size_most_recent_;
|
| }
|
|
|
| -void ScreenCapturerHelper::set_size_most_recent(const SkISize& size) {
|
| +void ScreenCapturerHelper::set_size_most_recent(
|
| + const webrtc::DesktopSize& size) {
|
| size_most_recent_ = size;
|
| }
|
|
|
|
|