[4.0] Change in texture set requires recreation of uniform map 67/168767/2
authorFrancisco Santos <f1.santos@samsung.com>
Fri, 27 Oct 2017 15:34:44 +0000 (16:34 +0100)
committerHeeyong Song <heeyong.song@samsung.com>
Wed, 31 Jan 2018 02:30:23 +0000 (02:30 +0000)
Aging SceneGraph::Renderer::mRegenerateUniformMap() isn't necessarily matched by
calls to Render::Renderer::SetUniforms(), which isn't called if textures aren't ready.

Change-Id: Ifb1d366c579dac196de27d653688e776184a513d

dali/internal/render/renderers/render-renderer.cpp
dali/internal/update/rendering/scene-graph-renderer.cpp

index 690ae55..1d2328d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -231,7 +231,8 @@ void Renderer::SetUniforms( BufferIndex bufferIndex, const SceneGraph::NodeDataP
   const SceneGraph::UniformMapDataProvider& uniformMapDataProvider = mRenderDataProvider->GetUniformMap();
 
   if( uniformMapDataProvider.GetUniformMapChanged( bufferIndex ) ||
-      node.GetUniformMapChanged(bufferIndex))
+      node.GetUniformMapChanged(bufferIndex) ||
+      mUniformIndexMap.Count() == 0)
   {
     const SceneGraph::CollectedUniformMap& uniformMap = uniformMapDataProvider.GetUniformMap( bufferIndex );
     const SceneGraph::CollectedUniformMap& uniformMapNode = node.GetUniformMap( bufferIndex );
index f2ecb41..5127be3 100644 (file)
@@ -636,6 +636,7 @@ Renderer::Opacity Renderer::GetOpacity( BufferIndex updateBufferIndex, const Nod
 
 void Renderer::TextureSetChanged()
 {
+  mRegenerateUniformMap = REGENERATE_UNIFORM_MAP;
   mResendFlag |= RESEND_DATA_PROVIDER;
 }
 
@@ -643,6 +644,7 @@ void Renderer::TextureSetDeleted()
 {
   mTextureSet = NULL;
 
+  mRegenerateUniformMap = REGENERATE_UNIFORM_MAP;
   mResendFlag |= RESEND_DATA_PROVIDER;
 }
 void Renderer::ConnectionsChanged( PropertyOwner& object )