| 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_);
|
|
|