| 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()) {
|
| + // 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());
|
|
|