summaryrefslogtreecommitdiffstats
path: root/src/imports/multimedia/qsgvideonode_i420.cpp
diff options
context:
space:
mode:
authorDmytro Poplavskiy <dmytro.poplavskiy@nokia.com>2012-01-20 14:30:03 +1000
committerQt by Nokia <qt-info@nokia.com>2012-01-20 08:27:50 +0100
commita465e37bd6df3ea198158e57fdc4b82acc11a4b8 (patch)
tree5af9842ca17c366a3087da3ef1566dee3be1eb19 /src/imports/multimedia/qsgvideonode_i420.cpp
parent48f714037e31f151a6e757e17d50f70c8235d4b3 (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.cpp12
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();