summaryrefslogtreecommitdiffstats
path: root/remoting/host/differ.cc
diff options
context:
space:
mode:
authordmaclach@chromium.org <dmaclach@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-12 22:01:13 +0000
committerdmaclach@chromium.org <dmaclach@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-12 22:01:13 +0000
commitdc454a7c429cf732487a0cfacffd36f93effd531 (patch)
tree3f0d30a3b05fbbf369e023ea0b24e3dc9902ce30 /remoting/host/differ.cc
parent6d5d33bf9871f9e89260002f3ec09678d45129fa (diff)
downloadchromium_src-dc454a7c429cf732487a0cfacffd36f93effd531.zip
chromium_src-dc454a7c429cf732487a0cfacffd36f93effd531.tar.gz
chromium_src-dc454a7c429cf732487a0cfacffd36f93effd531.tar.bz2
Switch over to using SkRegions to calculate dirty areas.
BUG=91619 TEST=Set up a remoting sesssion and make sure it works. Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=96327 Review URL: http://codereview.chromium.org/7491070 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@96632 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'remoting/host/differ.cc')
-rw-r--r--remoting/host/differ.cc19
1 files changed, 10 insertions, 9 deletions
diff --git a/remoting/host/differ.cc b/remoting/host/differ.cc
index d5e618a..582521c 100644
--- a/remoting/host/differ.cc
+++ b/remoting/host/differ.cc
@@ -26,12 +26,12 @@ Differ::Differ(int width, int height, int bpp, int stride) {
Differ::~Differ() {}
-void Differ::CalcDirtyRects(const void* prev_buffer, const void* curr_buffer,
- InvalidRects* rects) {
- if (!rects) {
+void Differ::CalcDirtyRegion(const void* prev_buffer, const void* curr_buffer,
+ SkRegion* region) {
+ if (!region) {
return;
}
- rects->clear();
+ region->setEmpty();
if (!prev_buffer || !curr_buffer) {
return;
@@ -42,7 +42,7 @@ void Differ::CalcDirtyRects(const void* prev_buffer, const void* curr_buffer,
// Now that we've identified the blocks that have changed, merge adjacent
// blocks to minimize the number of rects that we return.
- MergeBlocks(rects);
+ MergeBlocks(region);
}
void Differ::MarkDirtyBlocks(const void* prev_buffer, const void* curr_buffer) {
@@ -131,9 +131,9 @@ DiffInfo Differ::DiffPartialBlock(const uint8* prev_buffer,
return 0;
}
-void Differ::MergeBlocks(InvalidRects* rects) {
- DCHECK(rects);
- rects->clear();
+void Differ::MergeBlocks(SkRegion* region) {
+ DCHECK(region);
+ region->setEmpty();
uint8* diff_info_row_start = static_cast<uint8*>(diff_info_.get());
int diff_info_stride = diff_info_width_ * sizeof(DiffInfo);
@@ -195,7 +195,8 @@ void Differ::MergeBlocks(InvalidRects* rects) {
if (top + height > height_) {
height = height_ - top;
}
- rects->insert(gfx::Rect(left, top, width, height));
+ region->op(SkIRect::MakeXYWH(left, top, width, height),
+ SkRegion::kUnion_Op);
}
// Increment to next block in this row.