From a3e51a9fba2851c72dc953d10c96ad98d11db81a Mon Sep 17 00:00:00 2001 From: Kevin Butchart Date: Fri, 29 Aug 2014 13:32:43 +0100 Subject: [PATCH] Change shader data pointer to IntrusivePtr Change to using intrusive pointer as, especially after GL Context loss and restore, the pointer may not be valid. IntrusivePtr ensures that the program data will not be destroyed for the lifetime of the program class Change-Id: Ibe3b27b2e4f94baab04e325b8284b9d26f516240 --- dali/internal/render/shaders/program.cpp | 2 +- dali/internal/render/shaders/program.h | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/dali/internal/render/shaders/program.cpp b/dali/internal/render/shaders/program.cpp index c25fdb0..7a8cbe4 100644 --- a/dali/internal/render/shaders/program.cpp +++ b/dali/internal/render/shaders/program.cpp @@ -465,7 +465,7 @@ Program::~Program() void Program::Load() { - DALI_ASSERT_ALWAYS( NULL != mProgramData && "Program data is not initialized" ); + DALI_ASSERT_ALWAYS( NULL != mProgramData.Get() && "Program data is not initialized" ); Unload(); diff --git a/dali/internal/render/shaders/program.h b/dali/internal/render/shaders/program.h index 0a0e94a..341abb9 100644 --- a/dali/internal/render/shaders/program.h +++ b/dali/internal/render/shaders/program.h @@ -27,6 +27,7 @@ #include #include #include +#include namespace Dali { @@ -360,7 +361,7 @@ private: // Data GLuint mVertexShaderId; ///< GL identifier for vertex shader GLuint mFragmentShaderId; ///< GL identifier for fragment shader GLuint mProgramId; ///< GL identifier for program - Integration::ShaderData* mProgramData; ///< Shader program source and binary (when compiled & linked or loaded) + Integration::ShaderDataPtr mProgramData; ///< Shader program source and binary (when compiled & linked or loaded) // location caches GLint mAttribLocations[ ATTRIB_TYPE_LAST ]; ///< attribute location cache -- 2.7.4