Added connection for sampler texture
[platform/core/uifw/dali-core.git] / dali / internal / update / effects / scene-graph-material.cpp
index 952ae2a..c0ee2ca 100644 (file)
@@ -46,7 +46,8 @@ Material::~Material()
 void Material::SetShader( const Shader* shader )
 {
   mShader = shader;
-  // @todo inform NewRenderer about this shader
+  // Inform NewRenderer about this shader: (Will force a re-load of the
+  // shader from the data providers)
   mConnectionObservers.ConnectionsChanged(*this);
 }
 
@@ -61,6 +62,10 @@ void Material::AddSampler( const Sampler* sampler )
   const SamplerDataProvider* sdp = static_cast< const SamplerDataProvider*>( sampler );
   mSamplers.PushBack( sdp );
 
+  Sampler* mutableSampler = const_cast<Sampler*>(sampler);
+  mutableSampler->AddConnectionObserver( *this );
+  mutableSampler->AddUniformMapObserver( *this );
+
   mConnectionObservers.ConnectionsChanged(*this);
 }
 
@@ -81,6 +86,9 @@ void Material::RemoveSampler( const Sampler* sampler )
 
   if( found )
   {
+    Sampler* mutableSampler = const_cast<Sampler*>(sampler);
+    mutableSampler->RemoveConnectionObserver( *this );
+    mutableSampler->RemoveUniformMapObserver( *this );
     mSamplers.Erase(iter);
     mConnectionObservers.ConnectionsChanged(*this);
   }
@@ -120,6 +128,16 @@ void Material::UniformMappingsChanged( const UniformMap& mappings )
   mConnectionObservers.ConnectedUniformMapChanged();
 }
 
+void Material::ConnectionsChanged( PropertyOwner& owner )
+{
+  mConnectionObservers.ConnectionsChanged(*this);
+}
+
+void Material::ConnectedUniformMapChanged( )
+{
+  mConnectionObservers.ConnectedUniformMapChanged();
+}
+
 void Material::ResetDefaultProperties( BufferIndex updateBufferIndex )
 {
   mColor.ResetToBaseValue( updateBufferIndex );