diff options
Diffstat (limited to 'src/plugins/directshow/common/directshowsamplegrabber.cpp')
-rw-r--r-- | src/plugins/directshow/common/directshowsamplegrabber.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/plugins/directshow/common/directshowsamplegrabber.cpp b/src/plugins/directshow/common/directshowsamplegrabber.cpp index b33c3cfc6..fb95370ca 100644 --- a/src/plugins/directshow/common/directshowsamplegrabber.cpp +++ b/src/plugins/directshow/common/directshowsamplegrabber.cpp @@ -99,9 +99,11 @@ public: STDMETHODIMP BufferCB(double time, BYTE *buffer, long bufferLen) { - if (m_grabber) - Q_EMIT m_grabber->bufferAvailable(time, buffer, bufferLen); - + if (m_grabber) { + // Deep copy, the data might be modified or freed after the callback returns + QByteArray data(reinterpret_cast<const char *>(buffer), bufferLen); + Q_EMIT m_grabber->bufferAvailable(time, data); + } return S_OK; } |