Tizen 2.4.0 rev3 SDK Public Release
[framework/graphics/dali.git] / dali / internal / update / controllers / scene-controller-impl.cpp
index eab7d85..b5ca61f 100644 (file)
@@ -19,6 +19,7 @@
 #include <dali/internal/update/controllers/scene-controller-impl.h>
 
 // INTERNAL INCLUDES
+#include <dali/internal/render/renderers/scene-graph-image-renderer.h>
 
 namespace Dali
 {
@@ -44,6 +45,36 @@ SceneControllerImpl::SceneControllerImpl( RenderMessageDispatcher& renderMessage
 
 SceneControllerImpl::~SceneControllerImpl()
 {
+  // Clean-up renderers
+  const unsigned int count( mRendererPool.Count() );
+  for( unsigned int i=0; i<count; ++i )
+  {
+    ImageRenderer* renderer = mRendererPool[i];
+    delete renderer;
+  }
+}
+
+ImageRenderer* SceneControllerImpl::NewImageRenderer( NodeDataProvider& dataProvider )
+{
+  ImageRenderer* renderer( NULL );
+
+  if( 0 == mRendererPool.Count() )
+  {
+    renderer = ImageRenderer::New( dataProvider );
+  }
+  else
+  {
+    renderer = mRendererPool[ mRendererPool.Count() - 1 ];
+
+    mRendererPool.Erase( mRendererPool.End() - 1 );
+  }
+
+  return renderer;
+}
+
+void SceneControllerImpl::FreeImageRenderer( ImageRenderer& renderer )
+{
+  mRendererPool.PushBack( &renderer );
 }
 
 } // namespace SceneGraph