Chromium Code Reviews| Index: third_party/WebKit/Source/platform/graphics/DeferredImageDecoder.cpp |
| diff --git a/third_party/WebKit/Source/platform/graphics/DeferredImageDecoder.cpp b/third_party/WebKit/Source/platform/graphics/DeferredImageDecoder.cpp |
| index 60d65443bb9078e6621f8440674f7661dacdf33c..baf09e4afd3dc5d75407ff5ec82a95df0a3051c4 100644 |
| --- a/third_party/WebKit/Source/platform/graphics/DeferredImageDecoder.cpp |
| +++ b/third_party/WebKit/Source/platform/graphics/DeferredImageDecoder.cpp |
| @@ -120,6 +120,24 @@ PassRefPtr<SkImage> DeferredImageDecoder::createFrameAtIndex(size_t index) |
| return fromSkSp(SkImage::MakeFromBitmap(frame->bitmap())); |
| } |
| +bool DeferredImageDecoder::hasData() const |
| +{ |
| + return static_cast<bool>(m_rwBuffer); |
| +} |
| + |
| +PassRefPtr<SharedBuffer> DeferredImageDecoder::data() |
| +{ |
| + if (!m_rwBuffer) |
| + return nullptr; |
| + RefPtr<SkROBuffer> roBuffer = adoptRef(m_rwBuffer->newRBufferSnapshot()); |
| + RefPtr<SharedBuffer> sharedBuffer = SharedBuffer::create(); |
| + SkROBuffer::Iter it(roBuffer.get()); |
| + do { |
| + sharedBuffer->append(static_cast<const char*>(it.data()), it.size()); |
| + } while (it.next()); |
| + return sharedBuffer; |
|
haraken
2016/07/13 02:18:30
sharedBuffer.release()
hajimehoshi
2016/07/13 07:36:22
Done.
|
| +} |
| + |
| void DeferredImageDecoder::setData(SharedBuffer& data, bool allDataReceived) |
| { |
| if (m_actualDecoder) { |
| @@ -134,8 +152,9 @@ void DeferredImageDecoder::setData(SharedBuffer& data, bool allDataReceived) |
| const char* segment = 0; |
| for (size_t length = data.getSomeData(segment, m_rwBuffer->size()); |
| - length; length = data.getSomeData(segment, m_rwBuffer->size())) |
| + length; length = data.getSomeData(segment, m_rwBuffer->size())) { |
| m_rwBuffer->append(segment, length); |
| + } |
| } |
| } |