diff options
author | dmaclach@chromium.org <dmaclach@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-11 05:23:47 +0000 |
---|---|---|
committer | dmaclach@chromium.org <dmaclach@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-11 05:23:47 +0000 |
commit | 2db534007e92ba616b61e7a65f76e738151620f5 (patch) | |
tree | 9057712927d66f7e29e2981840cc86304e3d2d59 /remoting/host/capturer_helper.cc | |
parent | 274e372af7a6d457e4773fdce215e3e6d70efcea (diff) | |
download | chromium_src-2db534007e92ba616b61e7a65f76e738151620f5.zip chromium_src-2db534007e92ba616b61e7a65f76e738151620f5.tar.gz chromium_src-2db534007e92ba616b61e7a65f76e738151620f5.tar.bz2 |
Revert 96327 - Switch over to using SkRegions to calculate dirty areas.
BUG=91619
TEST=Set up a remoting sesssion and make sure it works.
Review URL: http://codereview.chromium.org/7491070
TBR=dmaclach@chromium.org
Review URL: http://codereview.chromium.org/7622002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@96328 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'remoting/host/capturer_helper.cc')
-rw-r--r-- | remoting/host/capturer_helper.cc | 41 |
1 files changed, 24 insertions, 17 deletions
diff --git a/remoting/host/capturer_helper.cc b/remoting/host/capturer_helper.cc index 8cb0295..eba7c12 100644 --- a/remoting/host/capturer_helper.cc +++ b/remoting/host/capturer_helper.cc @@ -4,6 +4,9 @@ #include "remoting/host/capturer_helper.h" +#include <algorithm> +#include <iterator> + namespace remoting { CapturerHelper::CapturerHelper() : size_most_recent_(0, 0) { @@ -12,20 +15,24 @@ CapturerHelper::CapturerHelper() : size_most_recent_(0, 0) { CapturerHelper::~CapturerHelper() { } -void CapturerHelper::ClearInvalidRegion() { - base::AutoLock auto_invalid_region_lock(invalid_region_lock_); - invalid_region_.setEmpty(); +void CapturerHelper::ClearInvalidRects() { + base::AutoLock auto_inval_rects_lock(inval_rects_lock_); + inval_rects_.clear(); } -void CapturerHelper::InvalidateRegion(const SkRegion& invalid_region) { - base::AutoLock auto_invalid_region_lock(invalid_region_lock_); - invalid_region_.op(invalid_region, SkRegion::kUnion_Op); +void CapturerHelper::InvalidateRects(const InvalidRects& inval_rects) { + base::AutoLock auto_inval_rects_lock(inval_rects_lock_); + InvalidRects temp_rects; + std::set_union(inval_rects_.begin(), inval_rects_.end(), + inval_rects.begin(), inval_rects.end(), + std::inserter(temp_rects, temp_rects.begin())); + inval_rects_.swap(temp_rects); } void CapturerHelper::InvalidateScreen(const gfx::Size& size) { - base::AutoLock auto_invalid_region_lock(invalid_region_lock_); - invalid_region_.op(SkIRect::MakeWH(size.width(), size.height()), - SkRegion::kUnion_Op); + base::AutoLock auto_inval_rects_lock(inval_rects_lock_); + inval_rects_.clear(); + inval_rects_.insert(gfx::Rect(0, 0, size.width(), size.height())); } void CapturerHelper::InvalidateFullScreen() { @@ -33,17 +40,17 @@ void CapturerHelper::InvalidateFullScreen() { InvalidateScreen(size_most_recent_); } -// TODO: Is this actually required? -// http://crbug.com/92346 bool CapturerHelper::IsCaptureFullScreen(const gfx::Size& size) { - base::AutoLock auto_invalid_region_lock(invalid_region_lock_); - SkRegion fullScreenRegion(SkIRect::MakeWH(size.width(), size.height())); - return fullScreenRegion == invalid_region_; + base::AutoLock auto_inval_rects_lock(inval_rects_lock_); + return inval_rects_.size() == 1u && + inval_rects_.begin()->x() == 0 && inval_rects_.begin()->y() == 0 && + inval_rects_.begin()->width() == size.width() && + inval_rects_.begin()->height() == size.height(); } -void CapturerHelper::SwapInvalidRegion(SkRegion* invalid_region) { - base::AutoLock auto_invalid_region_lock(invalid_region_lock_); - invalid_region->swap(invalid_region_); +void CapturerHelper::SwapInvalidRects(InvalidRects& inval_rects) { + base::AutoLock auto_inval_rects_lock(inval_rects_lock_); + inval_rects.swap(inval_rects_); } const gfx::Size& CapturerHelper::size_most_recent() const { |