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 | |
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')
-rw-r--r-- | src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp | 15 | ||||
-rw-r--r-- | src/plugins/videonode/imx6/qsgvivantevideomaterial.h | 4 |
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; |