Refactored ControlRenderer so that derived classes are responsible for the creation...
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / public-api / controls / control-impl.cpp
index c3ca785..429648b 100644 (file)
@@ -406,24 +406,17 @@ void Control::SetBackgroundColor( const Vector4& color )
 
   if( mImpl->mBackgroundRenderer )
   {
-    Toolkit::ControlRenderer currentRenderer( mImpl->mBackgroundRenderer );
-    // if ResetRenderer returns false, we continue to use the current renderer with a new color set to it.
-    if( ! factory.ResetRenderer( mImpl->mBackgroundRenderer, color ) )
-    {
-      return;
-    }
-    // ResetRenderer returns true, a new renderer is created. Remove the current renderer and reset.
-    currentRenderer.RemoveAndReset( self );
+    factory.ResetRenderer( mImpl->mBackgroundRenderer, self, color );
   }
   else
   {
     mImpl->mBackgroundRenderer = factory.GetControlRenderer( color );
-  }
 
-  if( self.OnStage() )
-  {
-    mImpl->mBackgroundRenderer.SetDepthIndex( BACKGROUND_DEPTH_INDEX );
-    mImpl->mBackgroundRenderer.SetOnStage( self );
+    if( self.OnStage() )
+    {
+      mImpl->mBackgroundRenderer.SetDepthIndex( BACKGROUND_DEPTH_INDEX );
+      mImpl->mBackgroundRenderer.SetOnStage( self );
+    }
   }
 }
 
@@ -463,30 +456,23 @@ void Control::SetBackgroundImage( Image image )
 
   if(  mImpl->mBackgroundRenderer  )
   {
-    Toolkit::ControlRenderer currentRenderer( mImpl->mBackgroundRenderer );
-    // if ResetRenderer returns false, we continue to use the current renderer with a new image set to it.
-    if( ! factory.ResetRenderer( mImpl->mBackgroundRenderer, image )  )
-    {
-      return;
-    }
-    // ResetRenderer returns true, a new renderer is created. Remove the current renderer and reset.
-    currentRenderer.RemoveAndReset( self );
+    factory.ResetRenderer( mImpl->mBackgroundRenderer, self, image );
   }
   else
   {
     mImpl->mBackgroundRenderer = factory.GetControlRenderer( image );
-  }
 
-  if( self.OnStage() )
-  {
-    mImpl->mBackgroundRenderer.SetDepthIndex( BACKGROUND_DEPTH_INDEX );
-    mImpl->mBackgroundRenderer.SetOnStage( self );
+    if( self.OnStage() )
+    {
+      mImpl->mBackgroundRenderer.SetDepthIndex( BACKGROUND_DEPTH_INDEX );
+      mImpl->mBackgroundRenderer.SetOnStage( self );
+    }
   }
 }
 
 void Control::ClearBackground()
 {
-  Actor self(Self());
+  Actor self( Self() );
   mImpl->mBackgroundRenderer.RemoveAndReset( self );
 }