From b0f283b65e8dc9e9dbfe81b3fd58e8898cbb6676 Mon Sep 17 00:00:00 2001 From: Frank Osterfeld Date: Sun, 22 Feb 2015 13:15:03 +0100 Subject: [PATCH] ios: Do not leak texture cache objects Do not recreate m_textureCache if it already exists. This changes the memory allocation behavior of a simple iOS example program from linearly increasing to constant over time. Change-Id: I6ff13b586c653fb7b4cadfa9f4ebf985b07ee455 Reviewed-by: Yoann Lopes --- .../mediaplayer/avfvideoframerenderer_ios.mm | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/plugins/avfoundation/mediaplayer/avfvideoframerenderer_ios.mm b/src/plugins/avfoundation/mediaplayer/avfvideoframerenderer_ios.mm index 0c8e8c52..b5ad8538 100644 --- a/src/plugins/avfoundation/mediaplayer/avfvideoframerenderer_ios.mm +++ b/src/plugins/avfoundation/mediaplayer/avfvideoframerenderer_ios.mm @@ -240,14 +240,16 @@ void AVFVideoFrameRenderer::initRenderer() //Need current context m_glContext->makeCurrent(m_offscreenSurface); - // Create a new open gl texture cache - CVReturn err = CVOGLTextureCacheCreate(kCFAllocatorDefault, NULL, - [EAGLContext currentContext], - NULL, &m_textureCache); - - if (err) { -#ifdef QT_DEBUG_AVF - qWarning("Error at CVOGLTextureCacheCreate %d", err); -#endif + if (!m_textureCache) { + // Create a new open gl texture cache + CVReturn err = CVOGLTextureCacheCreate(kCFAllocatorDefault, NULL, + [EAGLContext currentContext], + NULL, &m_textureCache); + if (err) { + #ifdef QT_DEBUG_AVF + qWarning("Error at CVOGLTextureCacheCreate %d", err); + #endif + } } + }