- mImpl->mBackgroundRenderer.SetDepthIndex( DepthIndex::BACKGROUND );
- mImpl->mBackgroundRenderer.SetOnStage( self );
+ if( self.OnStage() )
+ {
+ mImpl->mBackgroundVisual.RemoveAndReset( self );
+ backgroundVisual.SetOnStage( self );
+ }
+ mImpl->mBackgroundVisual = backgroundVisual;
+ mImpl->mBackgroundVisual.SetDepthIndex( DepthIndex::BACKGROUND );
+ }
+ // ...otherwise process map and apply it to the existing visual
+ else if( mImpl->mBackgroundVisual )
+ {
+ Property::Value* premultipliedAlpha = map.Find( Toolkit::DevelVisual::Property::PREMULTIPLIED_ALPHA, Toolkit::Internal::PREMULTIPLIED_ALPHA );
+ if( premultipliedAlpha )
+ {
+ bool value( premultipliedAlpha->Get<bool>() );
+ Toolkit::GetImplementation( mImpl->mBackgroundVisual ).EnablePreMultipliedAlpha( value );
+ }