diff options
author | dmaclach@chromium.org <dmaclach@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-12 22:01:13 +0000 |
---|---|---|
committer | dmaclach@chromium.org <dmaclach@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-12 22:01:13 +0000 |
commit | dc454a7c429cf732487a0cfacffd36f93effd531 (patch) | |
tree | 3f0d30a3b05fbbf369e023ea0b24e3dc9902ce30 /remoting/host/differ.cc | |
parent | 6d5d33bf9871f9e89260002f3ec09678d45129fa (diff) | |
download | chromium_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.cc | 19 |
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. |