X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Futc-Dali-ImageVisual.cpp;h=e07933afb01f4cb1dc348ff8c845362caaf19bc7;hp=0bd2225bba4b3a138c4965a5bad48e40ebd59930;hb=bfa5276cfac80f6dd1f874503e6fefb74a90b19e;hpb=ad110f27c01af7e617df158891eef5cf60bf22e6 diff --git a/automated-tests/src/dali-toolkit/utc-Dali-ImageVisual.cpp b/automated-tests/src/dali-toolkit/utc-Dali-ImageVisual.cpp index 0bd2225..e07933a 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-ImageVisual.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-ImageVisual.cpp @@ -20,7 +20,6 @@ #include #include #include -#include #include #include #include @@ -59,7 +58,7 @@ std::vector gReadyIds = {}; void ResourceReadySignal( Control control ) { gResourceReadySignalFired = true; - gReadyIds.push_back(control.GetId()); + gReadyIds.push_back(control.GetProperty< int >( Actor::Property::ID )); } void ClearReadyIds() { @@ -115,7 +114,7 @@ void TestVisualRender( ToolkitTestApplication& application, actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); // Send messages to update application.Render(); // process update and render @@ -184,7 +183,7 @@ int UtcDaliImageVisualPropertyMap(void) actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); application.Render(); @@ -203,7 +202,7 @@ int UtcDaliImageVisualPropertyMap(void) DALI_TEST_EQUALS( preMultipliedAlpha2, true, TEST_LOCATION ); DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION ); - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); END_TEST; @@ -240,7 +239,7 @@ int UtcDaliImageVisualNoPremultipliedAlpha01(void) actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); application.Render(); @@ -261,7 +260,7 @@ int UtcDaliImageVisualNoPremultipliedAlpha01(void) DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION ); - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); END_TEST; @@ -297,7 +296,7 @@ int UtcDaliImageVisualNoPremultipliedAlpha02(void) actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); application.Render(); @@ -343,7 +342,7 @@ int UtcDaliImageVisualNoPremultipliedAlpha02(void) newActor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); DALI_TEST_EQUALS( newActor.GetRendererCount(), 0u, TEST_LOCATION ); - Stage::GetCurrent().Add( newActor ); + application.GetScene().Add( newActor ); application.SendNotification(); application.Render(); @@ -367,7 +366,7 @@ int UtcDaliImageVisualNoPremultipliedAlpha02(void) DALI_TEST_CHECK( srcFactorAlpha == BlendFactor::ONE ); DALI_TEST_CHECK( destFactorAlpha == BlendFactor::ONE_MINUS_SRC_ALPHA ); - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); END_TEST; @@ -400,7 +399,7 @@ int UtcDaliImageVisualRemoteImageLoad(void) actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); @@ -411,7 +410,7 @@ int UtcDaliImageVisualRemoteImageLoad(void) DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION ); DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION ); - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); END_TEST; @@ -434,7 +433,7 @@ int UtcDaliImageVisualTextureReuse1(void) drawTrace.Enable(true); Actor actor = CreateActorWithImageVisual( propertyMap ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); // Wait for image to load @@ -451,7 +450,7 @@ int UtcDaliImageVisualTextureReuse1(void) drawTrace.Reset(); Actor actor2 = CreateActorWithImageVisual( propertyMap ); - Stage::GetCurrent().Add(actor2); + application.GetScene().Add(actor2); application.SendNotification(); // Send messages to update application.Render(); // process update and render @@ -468,7 +467,7 @@ int UtcDaliImageVisualTextureReuse1(void) tet_infoline("Test that removing 1 actor doesn't delete the texture\n"); - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); application.SendNotification(); application.Render(); @@ -477,7 +476,7 @@ int UtcDaliImageVisualTextureReuse1(void) tet_infoline("Test that removing last actor does delete the texture\n"); - Stage::GetCurrent().Remove( actor2 ); // Detaches remaining ImageVisual + application.GetScene().Remove( actor2 ); // Detaches remaining ImageVisual application.SendNotification(); application.Render(); @@ -504,7 +503,7 @@ int UtcDaliImageVisualTextureReuse2(void) drawTrace.Enable(true); Actor actor = CreateActorWithImageVisual( propertyMap ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); // Wait for image to load @@ -524,7 +523,7 @@ int UtcDaliImageVisualTextureReuse2(void) propertyMap.Insert( ImageVisual::Property::DESIRED_WIDTH, 100 ); propertyMap.Insert( ImageVisual::Property::DESIRED_HEIGHT, 100 ); Actor actor2 = CreateActorWithImageVisual( propertyMap ); - Stage::GetCurrent().Add(actor2); + application.GetScene().Add(actor2); application.SendNotification(); @@ -550,7 +549,7 @@ int UtcDaliImageVisualTextureReuse2(void) tet_infoline("Test that removing 1 actor deletes it's texture\n"); - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); application.SendNotification(); application.Render(); @@ -559,7 +558,7 @@ int UtcDaliImageVisualTextureReuse2(void) tet_infoline("Test that removing last actor deletes it's texture\n"); - Stage::GetCurrent().Remove( actor2 ); + application.GetScene().Remove( actor2 ); application.SendNotification(); application.Render(); @@ -570,39 +569,6 @@ int UtcDaliImageVisualTextureReuse2(void) } -int UtcDaliImageVisualImageHandle(void) -{ - ToolkitTestApplication application; - tet_infoline( "Request image visual with an image handle" ); - - VisualFactory factory = VisualFactory::Get(); - DALI_TEST_CHECK( factory ); - - Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME); - Visual::Base visual = factory.CreateVisual( image ); - - // For tesing the LoadResourceFunc is called, a big image size should be set, so the atlasing is not applied. - // Image with a size smaller than 512*512 will be uploaded as a part of the atlas. - - const int width=512; - const int height=513; - - Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, ResourcePolicy::OWNED_DISCARD ); - bitmap->GetPackedPixelsProfile()->ReserveBuffer( Pixel::RGBA8888, width, height,width, height ); - - TestGlAbstraction& gl = application.GetGlAbstraction(); - TraceCallStack& textureTrace = gl.GetTextureTrace(); - textureTrace.Enable(true); - - DummyControl actor = DummyControl::New(); - TestVisualRender( application, actor, visual, 1u, - ImageDimensions(width, height), - Integration::ResourcePointer(bitmap) ); - - DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION ); - END_TEST; -} - int UtcDaliImageVisualCustomWrapModePixelArea(void) { ToolkitTestApplication application; @@ -641,7 +607,7 @@ int UtcDaliImageVisualCustomWrapModePixelArea(void) dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual ); actor.SetProperty( Actor::Property::SIZE, Vector2(2000, 2000) ); actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); // loading started application.SendNotification(); @@ -719,7 +685,7 @@ int UtcDaliImageVisualCustomWrapModeNoAtlas(void) dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual ); actor.SetProperty( Actor::Property::SIZE, Vector2(2000, 2000) ); actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); // loading started application.SendNotification(); @@ -778,12 +744,12 @@ int UtcDaliImageVisualAnimateMixColor(void) actor.SetProperty( Actor::Property::SIZE, Vector2(2000, 2000) ); actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER); actor.SetProperty( Actor::Property::COLOR,Color::BLACK); - Stage::GetCurrent().Add(actor); + application.GetScene().Add(actor); DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION); Renderer renderer = actor.GetRendererAt(0); - Property::Index index = DevelHandle::GetPropertyIndex( renderer, Visual::Property::MIX_COLOR ); + Property::Index index = renderer.GetPropertyIndex( Visual::Property::MIX_COLOR ); Property::Value blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE ); DALI_TEST_EQUALS( blendModeValue.Get(), (int)BlendMode::AUTO, TEST_LOCATION ); @@ -858,7 +824,7 @@ int UtcDaliImageVisualAnimateOpacity(void) actor.SetProperty( Actor::Property::SIZE, Vector2(2000, 2000) ); actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER); actor.SetProperty( Actor::Property::COLOR,Color::BLACK); - Stage::GetCurrent().Add(actor); + application.GetScene().Add(actor); DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION); @@ -996,7 +962,7 @@ int UtcDaliImageVisualAnimateOpacity02(void) Dali::Toolkit::TransitionData transition = TransitionData::New( array ); Animation animation = dummyImpl.CreateTransition( transition ); - Stage::GetCurrent().Add(actor); + application.GetScene().Add(actor); application.SendNotification(); application.Render(0); // Ensure animation starts @@ -1057,12 +1023,12 @@ int UtcDaliImageVisualAnimatePixelArea(void) actor.SetProperty( Actor::Property::SIZE, Vector2(2000, 2000) ); actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER); actor.SetProperty( Actor::Property::COLOR,Color::BLACK); - Stage::GetCurrent().Add(actor); + application.GetScene().Add(actor); DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION); Renderer renderer = actor.GetRendererAt(0); - Property::Index index = DevelHandle::GetPropertyIndex( renderer, Visual::Property::MIX_COLOR ); + Property::Index index = renderer.GetPropertyIndex( Visual::Property::MIX_COLOR ); tet_infoline("Test that the renderer has the mixColor property"); DALI_TEST_CHECK( index != Property::INVALID_INDEX ); @@ -1114,10 +1080,10 @@ int UtcDaliImageVisualTextureCancelRemoteLoad(void) drawTrace.Enable(true); Actor actor = CreateActorWithImageVisual( propertyMap ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); application.SendNotification(); DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); @@ -1131,7 +1097,7 @@ int UtcDaliImageVisualTextureCancelRemoteLoad(void) int UtcDaliImageVisualTextureCancelAsyncLoad(void) { ToolkitTestApplication application; - tet_infoline( "Load image asynchronosly, cancel loading, then load again" ); + tet_infoline( "Load image asynchronously, cancel loading, then load again" ); VisualFactory factory = VisualFactory::Get(); DALI_TEST_CHECK( factory ); @@ -1153,12 +1119,12 @@ int UtcDaliImageVisualTextureCancelAsyncLoad(void) DummyControlImpl& dummyImpl = static_cast< DummyControlImpl& >( actor.GetImplementation() ); dummyImpl.RegisterVisual( Control::Property::BACKGROUND, visual ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); // Cancel loading - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); // Create another visual with the same image visual = factory.CreateVisual( propertyMap ); @@ -1206,7 +1172,7 @@ int UtcDaliImageVisualSetInvalidAsyncImage(void) actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); @@ -1217,7 +1183,7 @@ int UtcDaliImageVisualSetInvalidAsyncImage(void) DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION ); DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION ); - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); END_TEST; @@ -1250,7 +1216,7 @@ int UtcDaliImageVisualSetInvalidSyncImage(void) actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); application.Render(); @@ -1258,7 +1224,7 @@ int UtcDaliImageVisualSetInvalidSyncImage(void) DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION ); DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION ); - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); END_TEST; @@ -1291,7 +1257,7 @@ int UtcDaliImageVisualSetInvalidRemoteImage(void) actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); @@ -1302,7 +1268,7 @@ int UtcDaliImageVisualSetInvalidRemoteImage(void) DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION ); DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION ); - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); END_TEST; @@ -1343,7 +1309,7 @@ int UtcDaliImageVisualAlphaMask(void) DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); DALI_TEST_EQUALS( actor.IsResourceReady(), false, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); application.Render(); @@ -1398,7 +1364,7 @@ int UtcDaliImageVisualSynchronousLoadAlphaMask(void) DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); DALI_TEST_EQUALS( actor.IsResourceReady(), false, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); // Do not wait for any EventThreadTrigger in synchronous alpha mask. @@ -1454,7 +1420,7 @@ int UtcDaliImageVisualRemoteAlphaMask(void) actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); application.Render(); @@ -1509,7 +1475,7 @@ int UtcDaliImageVisualAlphaMaskCrop(void) DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); DALI_TEST_EQUALS( actor.IsResourceReady(), false, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); application.Render(); @@ -1555,7 +1521,7 @@ int UtcDaliImageVisualReleasePolicy01(void) DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); DALI_TEST_EQUALS( textureTrace.FindMethod("GenTextures"), false, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); // Wait for image to load DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); @@ -1605,7 +1571,7 @@ int UtcDaliImageVisualReleasePolicy02(void) DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); DALI_TEST_EQUALS( textureTrace.FindMethod("GenTextures"), false, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); // Wait for image to load DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); @@ -1656,7 +1622,7 @@ int UtcDaliImageVisualReleasePolicy03(void) DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); DALI_TEST_EQUALS( textureTrace.FindMethod("GenTextures"), false, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); // Wait for image to load DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); @@ -1712,7 +1678,7 @@ int UtcDaliImageVisualReleasePolicy04(void) DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); DALI_TEST_EQUALS( textureTrace.FindMethod("GenTextures"), false, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); // Wait for image to load DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); @@ -1795,7 +1761,7 @@ int UtcDaliImageVisualReleasePolicy06(void) DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); DALI_TEST_EQUALS( textureTrace.FindMethod("GenTextures"), false, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); // Wait for image to load DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); @@ -1862,7 +1828,7 @@ int UtcDaliImageVisualReleasePolicy07(void) DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); DALI_TEST_EQUALS( textureTrace.FindMethod("GenTextures"), false, TEST_LOCATION ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); // Wait for image to load DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); @@ -1894,6 +1860,87 @@ int UtcDaliImageVisualReleasePolicy07(void) END_TEST; } +int UtcDaliImageVisualReleasePolicy08(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliImageVisualReleasePolicy08 Ensure TextureSet is same after detach/attach on stage when texture used the DESTROYED release policy" ); + + tet_infoline( "Create first visual with DESTROYED release policy" ); + Visual::Base imageVisualDestroyed = CreateVisualWithPolicy( TEST_IMAGE_FILE_NAME, ImageVisual::Property::RELEASE_POLICY, ImageVisual::ReleasePolicy::DESTROYED ); + + // Set up trace debug + TestGlAbstraction& gl = application.GetGlAbstraction(); + TraceCallStack& textureTrace = gl.GetTextureTrace(); + textureTrace.Enable(true); + + tet_infoline( "Register visuals with control and ensure it has the only handles" ); + DummyControl actor = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(actor.GetImplementation()); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, imageVisualDestroyed ); + imageVisualDestroyed.Reset(); // reduce ref count so only the control keeps the visual alive. + + actor.SetProperty( Actor::Property::SIZE, Vector2(200.f, 200.f) ); + + // Test initially zero renderers + application.SendNotification(); + application.Render(0); + DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); + DALI_TEST_EQUALS( textureTrace.FindMethod("GenTextures"), false, TEST_LOCATION ); + textureTrace.Reset(); + + application.GetScene().Add( actor ); + + // Wait for image to load + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); + + application.SendNotification(); + application.Render(0); + tet_infoline( "Ensure a texture is created" ); + DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION ); + DALI_TEST_EQUALS( textureTrace.FindMethod("GenTextures"), true, TEST_LOCATION ); + textureTrace.Reset(); + + // Ensure TextureSet is same after detach/attach on stage when texture used the DESTROYED release policy + // 1. Get TextureSet + TextureSet textureSetBefore = actor.GetRendererAt( 0u ).GetTextures(); + + // 2.Remove actor from stage. In this case, renderer also is deleted. + tet_infoline( "Remove actor from stage" ); + application.GetScene().Remove( actor ); + DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); + application.SendNotification(); + application.Render(); + + tet_infoline( "Ensure a texture is not deleted as visual used the DESTROYED release policy" ); + DALI_TEST_EQUALS( textureTrace.CountMethod("DeleteTextures"), 0, TEST_LOCATION ); + textureTrace.Reset(); + + // 3.Add actor in stage. In this case, renderer is created. + tet_infoline( "Add actor in stage" ); + application.GetScene().Add( actor ); + DALI_TEST_CHECK( actor.GetRendererCount() == 1u ); + application.SendNotification(); + application.Render(); + tet_infoline( "Ensure a texture is not created again" ); + DALI_TEST_EQUALS( textureTrace.CountMethod("GenTextures"), 0, TEST_LOCATION ); + textureTrace.Reset(); + + // 4.Compare Texture with before and after. textureSet need to be same because release policy is the DESTROYED. + tet_infoline( "Ensure a textureSet is not deleted because it is used the DESTROYED release policy" ); + TextureSet textureSetAfter = actor.GetRendererAt( 0u ).GetTextures(); + DALI_TEST_CHECK( textureSetBefore == textureSetAfter ); + textureSetBefore.Reset(); + textureSetAfter.Reset(); + + dummyImpl.UnregisterVisual( DummyControl::Property::TEST_VISUAL ); + DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); + application.SendNotification(); + application.Render(); + DALI_TEST_EQUALS( textureTrace.CountMethod("DeleteTextures"), 1, TEST_LOCATION ); + + END_TEST; +} + int UtcDaliImageVisualLoadPolicy01(void) { ToolkitTestApplication application; @@ -1938,7 +1985,7 @@ int UtcDaliImageVisualLoadPolicy01(void) imageVisual.Reset(); // reduce ref count so only the control keeps the visual alive. actor.SetProperty( Actor::Property::SIZE, Vector2(200.f, 200.f) ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); tet_infoline( "Ensure nothing triggers another load as texure already loaded" ); const unsigned int TIME_OUT_3_SECONDS = 3; DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1, TIME_OUT_3_SECONDS ), false, TEST_LOCATION ); @@ -1992,7 +2039,7 @@ int UtcDaliImageVisualLoadPolicy02(void) imageVisual.Reset(); // reduce ref count so only the control keeps the visual alive. actor.SetProperty( Actor::Property::SIZE, Vector2(200.f, 200.f) ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); tet_infoline( "Allow image time to load" ); DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); @@ -2120,7 +2167,7 @@ int UtcDaliImageVisualLoadPolicy05(void) actor.ResourceReadySignal().Connect( &ResourceReadySignal); Impl::DummyControl& dummyImpl = static_cast(actor.GetImplementation()); actor.SetProperty( Actor::Property::SIZE, Vector2(200.f, 200.f) ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); tet_infoline( "Create visual with ATTACHED load policy" ); Visual::Base imageVisual = CreateVisualWithPolicy( TEST_IMAGE_FILE_NAME, ImageVisual::Property::LOAD_POLICY, ImageVisual::LoadPolicy::ATTACHED ); @@ -2173,7 +2220,7 @@ int UtcDaliImageVisualOrientationCorrection(void) tet_infoline( "Create control for visual, need to loaded it" ); DummyControl actor = DummyControl::New(true); Impl::DummyControl& dummyImpl = static_cast(actor.GetImplementation()); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, imageVisual ); // Wait for image to load @@ -2241,7 +2288,7 @@ int UtcDaliImageVisualCustomShader(void) dummy.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); - Stage::GetCurrent().Add( dummy ); + application.GetScene().Add( dummy ); application.SendNotification(); application.Render(); @@ -2273,7 +2320,7 @@ int UtcDaliImageVisualCustomShader(void) dummyImpl1.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual1 ); dummy1.SetProperty( Actor::Property::SIZE, Vector2( 200, 200 ) ); dummy1.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); - Stage::GetCurrent().Add( dummy1 ); + application.GetScene().Add( dummy1 ); TestGlAbstraction& glAbstraction = application.GetGlAbstraction(); glAbstraction.EnableEnableDisableCallTrace( true ); @@ -2295,7 +2342,7 @@ void ResourceReadyLoadNext( Control control ) static int callNumber = 0; gResourceReadySignalFired = true; - gReadyIds.push_back(control.GetId()); + gReadyIds.push_back(control.GetProperty< int >( Actor::Property::ID )); if( callNumber == 0 ) { @@ -2328,11 +2375,11 @@ int UtcDaliImageVisualLoadReady01(void) tet_infoline( "Create a control and connect to resource ready signal" ); DummyControl actor = DummyControl::New(true); - int actor1Id = actor.GetId(); + int actor1Id = actor.GetProperty< int >( Actor::Property::ID ); actor.ResourceReadySignal().Connect( &ResourceReadySignal); Impl::DummyControl& dummyImpl = static_cast(actor.GetImplementation()); actor.SetProperty( Actor::Property::SIZE, Vector2(200.f, 200.f) ); - Stage::GetCurrent().Add(actor); + application.GetScene().Add(actor); tet_infoline( "Create visual with IMMEDIATE load policy" ); Visual::Base imageVisual1 = CreateVisualWithPolicy( TEST_IMAGE_FILE_NAME, ImageVisual::Property::LOAD_POLICY, ImageVisual::LoadPolicy::IMMEDIATE ); @@ -2359,7 +2406,7 @@ int UtcDaliImageVisualLoadReady01(void) Visual::Base imageVisual2 = CreateVisualWithPolicy( TEST_BROKEN_IMAGE_FILE_NAME, ImageVisual::Property::LOAD_POLICY, ImageVisual::LoadPolicy::IMMEDIATE ); DummyControl actor2 = DummyControl::New(true); - int actor2Id = actor2.GetId(); + int actor2Id = actor2.GetProperty< int >( Actor::Property::ID ); Impl::DummyControl& dummyImpl2 = static_cast(actor2.GetImplementation()); actor2.ResourceReadySignal().Connect( &ResourceReadyLoadNext); @@ -2367,7 +2414,7 @@ int UtcDaliImageVisualLoadReady01(void) dummyImpl2.RegisterVisual( DummyControl::Property::TEST_VISUAL, imageVisual2 ); actor2.SetProperty( Actor::Property::SIZE, Vector2(200.f, 200.f) ); - Stage::GetCurrent().Add(actor2); + application.GetScene().Add(actor2); tet_infoline( "Wait for loading thread to finish"); DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION );