diff options
author | Michael Olbrich <m.olbrich@pengutronix.de> | 2014-02-26 19:00:05 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-03-04 17:54:22 +0100 |
commit | 0e280e78e2fe0f0417ca284f6b0d7a536a970bfd (patch) | |
tree | e47f41d673174da2ed1d7ac02a9937e1120a3a8e /src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp | |
parent | 19b1dff5b22d66f365456359ee782a4afc963526 (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/plugins/videonode/imx6/qsgvivantevideomaterial.cpp')
-rw-r--r-- | src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp | 15 |
1 files changed, 15 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)) { |