Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(580)

Unified Diff: third_party/WebKit/Source/platform/graphics/ThreadSafeDataTransport.cpp

Issue 1484853003: Ganesh: images upload to GPU performance fix (skip copying encoded data) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Thread safe reference counting and disposal of shared data (m_data that is) Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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());

Powered by Google App Engine
This is Rietveld 408576698