From 071b25e591f0fff83d85087e3963fbe6387b7551 Mon Sep 17 00:00:00 2001 From: "Seungho, Baek" Date: Wed, 25 Mar 2020 13:57:03 +0900 Subject: [PATCH 1/1] Do not set resources if there isn't mRenderer in nPatch-visual. - If LoadComplete is called after off-stage, it makes error. Change-Id: I05338190e8db46faac4eb2a08eaaab3316dd3d2e Signed-off-by: Seungho, Baek --- .../src/dali-toolkit/utc-Dali-VisualFactory.cpp | 54 +++++++++++++++++++++- .../internal/visuals/npatch/npatch-visual.cpp | 2 +- 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/automated-tests/src/dali-toolkit/utc-Dali-VisualFactory.cpp b/automated-tests/src/dali-toolkit/utc-Dali-VisualFactory.cpp index df2d7be..c7f4282 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-VisualFactory.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-VisualFactory.cpp @@ -746,7 +746,7 @@ int UtcDaliVisualFactoryGetNPatchVisual2(void) int UtcDaliVisualFactoryGetNPatchVisual3(void) { ToolkitTestApplication application; - tet_infoline( "UtcDaliVisualFactoryGetNPatchVisual2: Request n-patch visual with a Property::Map" ); + tet_infoline( "UtcDaliVisualFactoryGetNPatchVisual3: Request n-patch visual with a Property::Map" ); VisualFactory factory = VisualFactory::Get(); DALI_TEST_CHECK( factory ); @@ -943,6 +943,58 @@ int UtcDaliVisualFactoryGetNPatchVisual6(void) END_TEST; } +int UtcDaliVisualFactoryGetNPatchVisual7(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliVisualFactoryGetNPatchVisual7: Add 9-patch visual on stage and instantly remove it." ); + + VisualFactory factory = VisualFactory::Get(); + DALI_TEST_CHECK( factory ); + + // Get actual size of test image + ImageDimensions imageSize = Dali::GetClosestImageSize( TEST_9_PATCH_FILE_NAME ); + + Property::Map propertyMap; + propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::N_PATCH ); + propertyMap.Insert( ImageVisual::Property::URL, TEST_9_PATCH_FILE_NAME ); + propertyMap.Insert( ImageVisual::Property::SYNCHRONOUS_LOADING, false ); + { + Visual::Base visual = factory.CreateVisual( propertyMap ); + DALI_TEST_CHECK( visual ); + + Vector2 naturalSize( 0.0f, 0.0f ); + visual.GetNaturalSize( naturalSize ); + DALI_TEST_EQUALS( naturalSize, Vector2( imageSize.GetWidth(), imageSize.GetHeight() ), TEST_LOCATION ); + + TestGlAbstraction& gl = application.GetGlAbstraction(); + TraceCallStack& textureTrace = gl.GetTextureTrace(); + textureTrace.Enable(true); + + DummyControl actor = DummyControl::New(true); + + DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); + + actor.SetSize( 200.f, 200.f ); + DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); + + Stage::GetCurrent().Add( actor ); + actor.Unparent(); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger(1 ), true, TEST_LOCATION ); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); + } + + END_TEST; +} + int UtcDaliNPatchVisualAuxiliaryImage(void) { ToolkitTestApplication application; diff --git a/dali-toolkit/internal/visuals/npatch/npatch-visual.cpp b/dali-toolkit/internal/visuals/npatch/npatch-visual.cpp index 4780153..c8b601a 100755 --- a/dali-toolkit/internal/visuals/npatch/npatch-visual.cpp +++ b/dali-toolkit/internal/visuals/npatch/npatch-visual.cpp @@ -815,7 +815,7 @@ Geometry NPatchVisual::CreateBorderGeometry( Uint16Pair gridSize ) void NPatchVisual::SetResource() { const NPatchLoader::Data* data; - if( mLoader.GetNPatchData( mId, data ) ) + if( mImpl->mRenderer && mLoader.GetNPatchData( mId, data ) ) { Geometry geometry = CreateGeometry(); Shader shader = CreateShader(); -- 2.7.4