From ca38f7946c5835a022d950555d7f96dbaf7f4708 Mon Sep 17 00:00:00 2001 From: Ferran Sole Date: Thu, 4 Aug 2016 10:45:19 +0100 Subject: [PATCH] Render textures created from NativeImages where not handled correctly * GlExtensionDestroy() was not being called on clean-up * PrepareTexture() was not being called when binding the texture * Error code returned from TargetTexture() was not being handled Change-Id: Ie3e8f9d5cc973da8a72eea68838e9443a3421077 --- dali/internal/render/renderers/render-texture.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/dali/internal/render/renderers/render-texture.cpp b/dali/internal/render/renderers/render-texture.cpp index 59c1206..8ca2647 100644 --- a/dali/internal/render/renderers/render-texture.cpp +++ b/dali/internal/render/renderers/render-texture.cpp @@ -625,6 +625,11 @@ void NewTexture::Destroy( Context& context ) if( mId ) { context.DeleteTextures( 1, &mId ); + + if( mNativeImage ) + { + mNativeImage->GlExtensionDestroy(); + } } } @@ -645,7 +650,12 @@ void NewTexture::Initialize(Context& context) context.TexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_WRAP_DEFAULT ); // platform specific implementation decides on what GL extension to use - mNativeImage->TargetTexture(); + if( mNativeImage->TargetTexture() != 0u ) + { + context.DeleteTextures( 1, &mId ); + mNativeImage->GlExtensionDestroy(); + mId = 0u; + } } } else @@ -803,6 +813,12 @@ bool NewTexture::Bind( Context& context, unsigned int textureUnit, Render::Sampl ApplySampler( context, sampler ); + if( mNativeImage ) + { + //Allow implementation specific operations after binding the texture + mNativeImage->PrepareTexture(); + } + return true; } -- 2.7.4