void Renderer::PrepareRender( BufferIndex updateBufferIndex )
{
- if( mRegenerateUniformMap > UNIFORM_MAP_READY )
+ if( mRegenerateUniformMap == UNIFORM_MAP_READY )
+ {
+ mUniformMapChanged[updateBufferIndex] = false;
+ }
+ else
{
if( mRegenerateUniformMap == REGENERATE_UNIFORM_MAP)
{
{
if( mResendFlag & RESEND_DATA_PROVIDER )
{
- RenderDataProvider* dataProvider = NewRenderDataProvider();
+ OwnerPointer<RenderDataProvider> dataProvider = NewRenderDataProvider();
typedef MessageValue1< Render::Renderer, OwnerPointer<RenderDataProvider> > DerivedType;
unsigned int* slot = mSceneController->GetRenderQueue().ReserveMessageSlot( updateBufferIndex, sizeof( DerivedType ) );
mRenderer = Render::Renderer::New( dataProvider, mGeometry, mBlendBitmask, GetBlendColor(), static_cast< FaceCullingMode::Type >( mFaceCullingMode ),
mPremultipledAlphaEnabled, mDepthWriteMode, mDepthTestMode, mDepthFunction, mStencilParameters );
- mSceneController->GetRenderMessageDispatcher().AddRenderer( *mRenderer );
+ OwnerPointer< Render::Renderer > transferOwnership( mRenderer );
+ mSceneController->GetRenderMessageDispatcher().AddRenderer( transferOwnership );
}
//Called just before destroying the scene-graph renderer ( when the "event-thread renderer" is no longer referenced )