summaryrefslogtreecommitdiffstats
path: root/remoting/host/capturer_helper.cc
diff options
context:
space:
mode:
authordmaclach@chromium.org <dmaclach@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-11 05:23:47 +0000
committerdmaclach@chromium.org <dmaclach@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-11 05:23:47 +0000
commit2db534007e92ba616b61e7a65f76e738151620f5 (patch)
tree9057712927d66f7e29e2981840cc86304e3d2d59 /remoting/host/capturer_helper.cc
parent274e372af7a6d457e4773fdce215e3e6d70efcea (diff)
downloadchromium_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.cc41
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 {