diff options
author | Dmytro Poplavskiy <dmytro.poplavskiy@nokia.com> | 2012-01-20 14:30:03 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-01-20 08:27:50 +0100 |
commit | a465e37bd6df3ea198158e57fdc4b82acc11a4b8 (patch) | |
tree | 5af9842ca17c366a3087da3ef1566dee3be1eb19 /src/imports/multimedia/qsgvideonode_i420.cpp | |
parent | 48f714037e31f151a6e757e17d50f70c8235d4b3 (diff) |
Fixed mapping video frames in SG nodes
Since it's possible to map video frame in R/O mode multiple times
it's always necessary to map it before accessing frame data.
Change-Id: I13f58085a0b19dba772e0b75c64d9f07d1ac2a58
Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
Diffstat (limited to 'src/imports/multimedia/qsgvideonode_i420.cpp')
-rw-r--r-- | src/imports/multimedia/qsgvideonode_i420.cpp | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/src/imports/multimedia/qsgvideonode_i420.cpp b/src/imports/multimedia/qsgvideonode_i420.cpp index fae2c8723..9886d712a 100644 --- a/src/imports/multimedia/qsgvideonode_i420.cpp +++ b/src/imports/multimedia/qsgvideonode_i420.cpp @@ -225,13 +225,8 @@ void QSGVideoMaterial_YUV420::bind() QOpenGLFunctions *functions = QOpenGLContext::currentContext()->functions(); QMutexLocker lock(&m_frameMutex); - if (m_frame.isValid() && m_frame.map(QAbstractVideoBuffer::ReadOnly)) { - bool wasMapped = m_frame.isMapped(); - - if (!wasMapped) - m_frame.map(QAbstractVideoBuffer::ReadOnly); - - if (m_frame.isMapped()) { + if (m_frame.isValid()) { + if (m_frame.map(QAbstractVideoBuffer::ReadOnly)) { int fw = m_frame.width(); int fh = m_frame.height(); @@ -260,8 +255,7 @@ void QSGVideoMaterial_YUV420::bind() functions->glActiveTexture(GL_TEXTURE0); // Finish with 0 as default texture unit bindTexture(m_textureIds[0], fw, fh, bits); - if (!wasMapped) - m_frame.unmap(); + m_frame.unmap(); } m_frame = QVideoFrame(); |