summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichael Olbrich <m.olbrich@pengutronix.de>2014-02-26 19:00:05 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-04 17:54:22 +0100
commit0e280e78e2fe0f0417ca284f6b0d7a536a970bfd (patch)
treee47f41d673174da2ed1d7ac02a9937e1120a3a8e /src
parent19b1dff5b22d66f365456359ee782a4afc963526 (diff)
videonode: imx6: clear texture cache when the format changes
The old textures won't match anyways. So there is no need to keep them. Change-Id: Id3482333d10cf022d04076ec0f5c7df475c522ae Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de> Reviewed-by: Andy Nichols <andy.nichols@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp15
-rw-r--r--src/plugins/videonode/imx6/qsgvivantevideomaterial.h4
2 files changed, 19 insertions, 0 deletions
diff --git a/src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp b/src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp
index 0ed4e1adc..44f9f4d12 100644
--- a/src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp
+++ b/src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp
@@ -56,6 +56,9 @@
QSGVivanteVideoMaterial::QSGVivanteVideoMaterial() :
mOpacity(1.0),
+ mWidth(0),
+ mHeight(0),
+ mFormat(QVideoFrame::Format_Invalid),
mCurrentTexture(0)
{
#ifdef QT_VIVANTE_VIDEO_DEBUG
@@ -147,6 +150,18 @@ GLuint QSGVivanteVideoMaterial::vivanteMapping(QVideoFrame vF)
return 0;
}
+ if (mWidth != vF.width() || mHeight != vF.height() || mFormat != vF.pixelFormat()) {
+ mWidth = vF.width();
+ mHeight = vF.height();
+ mFormat = vF.pixelFormat();
+ for (GLuint id : mBitsToTextureMap.values()) {
+#ifdef QT_VIVANTE_VIDEO_DEBUG
+ qDebug() << "delete texture: " << id;
+#endif
+ glDeleteTextures(1, &id);
+ }
+ mBitsToTextureMap.clear();
+ }
if (vF.map(QAbstractVideoBuffer::ReadOnly)) {
diff --git a/src/plugins/videonode/imx6/qsgvivantevideomaterial.h b/src/plugins/videonode/imx6/qsgvivantevideomaterial.h
index 9d792b788..0c1c4450e 100644
--- a/src/plugins/videonode/imx6/qsgvivantevideomaterial.h
+++ b/src/plugins/videonode/imx6/qsgvivantevideomaterial.h
@@ -70,6 +70,10 @@ public:
private:
qreal mOpacity;
+ int mWidth;
+ int mHeight;
+ QVideoFrame::PixelFormat mFormat;
+
QMap<const uchar*, GLuint> mBitsToTextureMap;
QVideoFrame mCurrentFrame, mNextFrame;
GLuint mCurrentTexture;