+ Property::Value* shaderValue = map.Find( "shader" );
+ // set image only if property map contains image information other than custom shader
+ if( map.Count() > 1u || !shaderValue )
+ {
+ impl.SetImage( map );
+ }
+ // the property map contains only the custom shader
+ else if( impl.mRenderer && map.Count() == 1u && shaderValue )
+ {
+ Property::Map shaderMap;
+ if( shaderValue->Get( shaderMap ) )
+ {
+ Internal::ControlRenderer& renderer = GetImplementation( impl.mRenderer );
+ renderer.SetCustomShader( shaderMap );
+ if( imageView.OnStage() )
+ {
+ // force to create new core renderer to use the newly set shader
+ renderer.SetOffStage( imageView );
+ renderer.SetOnStage( imageView );
+ }
+ }
+ }