Adding test to prove renderer is removed when removing a visual from the stage (via it's control).
Change-Id: I15442793e7715ba7b1c7660b306919be6bd9be1d
// Deprecated Properties
control.SetProperty( Control::Property::BACKGROUND_COLOR, Color::YELLOW );
- DALI_TEST_CHECK( control.GetProperty( Control::Property::BACKGROUND_COLOR ).Get< Vector4 >() == Color::YELLOW );
- DALI_TEST_CHECK( control.GetProperty( Control::Property::BACKGROUND_COLOR ).Get< Vector4 >() == control.GetBackgroundColor() );
+ DALI_TEST_EQUALS( control.GetProperty( Control::Property::BACKGROUND_COLOR ).Get< Vector4 >(), Color::YELLOW , TEST_LOCATION );
+ DALI_TEST_EQUALS( control.GetProperty( Control::Property::BACKGROUND_COLOR ).Get< Vector4 >(), control.GetBackgroundColor(), TEST_LOCATION );
+
control.ClearBackground();
Property::Map deprecatedImageMap;
control.SetProperty( Control::Property::BACKGROUND_IMAGE, deprecatedImageMap );
propValue = control.GetProperty( Control::Property::BACKGROUND_IMAGE );
resultMap = propValue.GetMap();
- DALI_TEST_CHECK( resultMap->Find( ImageVisual::Property::URL )->Get< std::string >() == "TestImage" );
+ DALI_TEST_EQUALS( resultMap->Find( ImageVisual::Property::URL )->Get< std::string >(), "TestImage" , TEST_LOCATION );
+
control.SetProperty( Control::Property::BACKGROUND_IMAGE, emptyMap );
DALI_TEST_CHECK( control.GetProperty( Control::Property::BACKGROUND_IMAGE ).Get< Property::Map >().Empty() );
// Register index with a color visual
dummyImpl.RegisterVisual( index, visual );
+ tet_infoline( "Add control with visual to stage and check renderer count is 1" );
+ Stage::GetCurrent().Add( dummy );
+ application.SendNotification();
+ application.Render();
+
DALI_TEST_CHECK( dummyImpl.GetVisual( index ) == visual );
+ DALI_TEST_EQUALS( dummy.GetRendererCount(), 1, TEST_LOCATION );
// Unregister visual
dummyImpl.UnregisterVisual( index );
+ tet_infoline( "Remove control with visual from stage and check renderer count is 0" );
+ Stage::GetCurrent().Remove( dummy );
+ application.SendNotification();
+ application.Render();
+
+ DALI_TEST_EQUALS( dummy.GetRendererCount(), 0, TEST_LOCATION );
DALI_TEST_CHECK( !dummyImpl.GetVisual( index ) );
END_TEST;
END_TEST;
}
+
+int UtcDaliVisualRendererRemovalAndReAddition(void)
+{
+ ToolkitTestApplication application;
+ tet_infoline( "UtcDaliVisualRendererRemoval" );
+
+ VisualFactory factory = VisualFactory::Get();
+ Property::Map propertyMap;
+ propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
+ propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
+ Visual::Base visual = factory.CreateVisual( propertyMap );
+
+ visual.SetDepthIndex( 1.f );
+
+ DummyControl dummyControl = DummyControl::New();
+ DummyControlImpl& dummyImpl = static_cast<DummyControlImpl&>(dummyControl.GetImplementation());
+ dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual );
+ DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
+
+ dummyControl.SetSize(200.f, 200.f);
+ tet_infoline( "Add control with visual to stage and check renderer count is 1" );
+
+ Stage::GetCurrent().Add( dummyControl );
+
+ application.SendNotification();
+ application.Render();
+
+ DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
+
+ tet_infoline( "Remove control with visual from stage and check renderer count is 0" );
+ Stage::GetCurrent().Remove( dummyControl );
+ application.SendNotification();
+ application.Render();
+
+ DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION );
+
+ tet_infoline( "Re-add control with visual to stage and check renderer count is still 1" );
+
+ Stage::GetCurrent().Add( dummyControl );
+
+ application.SendNotification();
+ application.Render();
+
+ DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION );
+
+ END_TEST;
+}
{
if( mImpl->mBackgroundVisual )
{
- Actor self( Self() );
- Toolkit::GetImplementation( mImpl->mBackgroundVisual ).SetOffStage( self );
+ UnregisterVisual( Toolkit::Control::Property::BACKGROUND );
mImpl->mBackgroundVisual.Reset();
}
mImpl->mBackgroundColor = Color::TRANSPARENT;
void Control::UnregisterVisual( Property::Index index )
{
- RegisteredVisualContainer::Iterator iter;
- if ( FindVisual( index, mImpl->mVisuals, iter ) )
- {
- mImpl->mVisuals.Erase( iter );
- }
+ RegisteredVisualContainer::Iterator iter;
+ if ( FindVisual( index, mImpl->mVisuals, iter ) )
+ {
+ Actor self( Self() );
+ Toolkit::GetImplementation((*iter)->visual).SetOffStage( self );
+ (*iter)->visual.Reset();
+ mImpl->mVisuals.Erase( iter );
+ }
}
Toolkit::Visual::Base Control::GetVisual( Property::Index index ) const