Index: remoting/base/encoder_row_based.cc |
diff --git a/remoting/base/encoder_row_based.cc b/remoting/base/encoder_row_based.cc |
index 8039869821163cb03feed02e4ccf9a758ea40abf..cef89e0aa8fd525ce5c7da5e817d8cb3d14f4681 100644 |
--- a/remoting/base/encoder_row_based.cc |
+++ b/remoting/base/encoder_row_based.cc |
@@ -66,16 +66,19 @@ void EncoderRowBased::Encode(scoped_refptr<CaptureData> capture_data, |
capture_data_ = capture_data; |
callback_.reset(data_available_callback); |
- const InvalidRects& rects = capture_data->dirty_rects(); |
- for (InvalidRects::const_iterator r = rects.begin(); r != rects.end(); ++r) { |
- EncodeRect(*r, r == --rects.end()); |
+ const SkRegion& region = capture_data->dirty_region(); |
+ SkRegion::Iterator iter(region); |
+ while (!iter.done()) { |
+ SkIRect rect = iter.rect(); |
+ iter.next(); |
+ EncodeRect(rect, iter.done()); |
} |
capture_data_ = NULL; |
callback_.reset(); |
} |
-void EncoderRowBased::EncodeRect(const gfx::Rect& rect, bool last) { |
+void EncoderRowBased::EncodeRect(const SkIRect& rect, bool last) { |
CHECK(capture_data_->data_planes().data[0]); |
const int strides = capture_data_->data_planes().strides[0]; |
const int bytes_per_pixel = GetBytesPerPixel(capture_data_->pixel_format()); |
@@ -86,7 +89,7 @@ void EncoderRowBased::EncodeRect(const gfx::Rect& rect, bool last) { |
VideoPacket* packet = new VideoPacket(); |
PrepareUpdateStart(rect, packet); |
const uint8* in = capture_data_->data_planes().data[0] + |
- rect.y() * strides + rect.x() * bytes_per_pixel; |
+ rect.fTop * strides + rect.fLeft * bytes_per_pixel; |
// TODO(hclam): Fill in the sequence number. |
uint8* out = GetOutputBuffer(packet, packet_size_); |
int filled = 0; |
@@ -142,13 +145,13 @@ void EncoderRowBased::EncodeRect(const gfx::Rect& rect, bool last) { |
} |
} |
-void EncoderRowBased::PrepareUpdateStart(const gfx::Rect& rect, |
+void EncoderRowBased::PrepareUpdateStart(const SkIRect& rect, |
VideoPacket* packet) { |
packet->set_flags(packet->flags() | VideoPacket::FIRST_PACKET); |
VideoPacketFormat* format = packet->mutable_format(); |
- format->set_x(rect.x()); |
- format->set_y(rect.y()); |
+ format->set_x(rect.fLeft); |
+ format->set_y(rect.fTop); |
format->set_width(rect.width()); |
format->set_height(rect.height()); |
format->set_encoding(encoding_); |