Chromium Code Reviews| Index: third_party/WebKit/Source/platform/graphics/ThreadSafeDataTransport.cpp |
| diff --git a/third_party/WebKit/Source/platform/graphics/ThreadSafeDataTransport.cpp b/third_party/WebKit/Source/platform/graphics/ThreadSafeDataTransport.cpp |
| index e047a0c2ca5846dbee0b0c09f746bd78051ada69..d082c3bd2a42d060b07bc8204298c169705823c5 100644 |
| --- a/third_party/WebKit/Source/platform/graphics/ThreadSafeDataTransport.cpp |
| +++ b/third_party/WebKit/Source/platform/graphics/ThreadSafeDataTransport.cpp |
| @@ -32,7 +32,8 @@ |
| namespace blink { |
| ThreadSafeDataTransport::ThreadSafeDataTransport() |
| - : m_readBuffer(SharedBuffer::create()) |
| + : m_newAllDataReceived(false) |
| + , m_readBuffer(SharedBuffer::create()) |
| , m_allDataReceived(false) |
| , m_readPosition(0) |
| { |
| @@ -56,7 +57,7 @@ void ThreadSafeDataTransport::setData(SharedBuffer* buffer, bool allDataReceived |
| MutexLocker locker(m_mutex); |
| m_newBufferQueue.appendVector(newBufferQueue); |
| newBufferQueue.clear(); |
| - m_allDataReceived = allDataReceived; |
| + m_newAllDataReceived = allDataReceived; |
| } |
| void ThreadSafeDataTransport::data(SharedBuffer** buffer, bool* allDataReceived) |
| @@ -67,7 +68,14 @@ void ThreadSafeDataTransport::data(SharedBuffer** buffer, bool* allDataReceived) |
| { |
| MutexLocker lock(m_mutex); |
| m_newBufferQueue.swap(newBufferQueue); |
| - *allDataReceived = m_allDataReceived; |
| + if (m_allDataReceived && newBufferQueue.size()) { |
|
aleksandar.stojiljkovic
2015/12/02 20:33:34
Nice find. This was handled here, but after ref co
|
| + // This prevents from unexisting use case now - if alldata was previously |
| + // received, don't append but start new buffer and leave reference counting |
| + // to handle previous buffer disposal. |
| + ASSERT(false); |
| + m_readBuffer = SharedBuffer::create(); |
| + } |
| + *allDataReceived = m_allDataReceived = m_newAllDataReceived; |
| } |
| for (size_t i = 0; i < newBufferQueue.size(); ++i) |
| m_readBuffer->append(newBufferQueue[i].get()); |