From 34acf01671928c22fe260fe8aa365ec2d0e05525 Mon Sep 17 00:00:00 2001 From: David Steele Date: Tue, 9 Mar 2021 15:52:25 +0000 Subject: [PATCH] Protecting test cases from memory scribbling Modified 3 tcs which have scribbling on shutdown (VisualFactory Singleton destroyed before visuals, due to scene still owning actors with visuals). Change-Id: I02c200d0094d6eb9803e617effc125ddb78faf46 --- .../dali-toolkit-test-utils/test-graphics-buffer.cpp | 2 +- .../dali-toolkit-test-utils/test-graphics-controller.cpp | 9 +++++++-- .../dali-toolkit-test-utils/test-graphics-controller.h | 4 ++-- automated-tests/src/dali-toolkit/utc-Dali-Slider.cpp | 5 ++++- automated-tests/src/dali-toolkit/utc-Dali-VisualFactory.cpp | 12 ++++++++---- 5 files changed, 22 insertions(+), 10 deletions(-) diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-graphics-buffer.cpp b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-graphics-buffer.cpp index b64b9ee..22ffcfb 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-graphics-buffer.cpp +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-graphics-buffer.cpp @@ -27,7 +27,7 @@ TestGraphicsBuffer::TestGraphicsBuffer(TraceCallStack& callStack, TestGlAbstract mGl(glAbstraction), mUsage(usage) { - memory.reserve(size); + memory.resize(size); mGl.GetBufferTrace().EnableLogging(true); } diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-graphics-controller.cpp b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-graphics-controller.cpp index 782835e..f970525 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-graphics-controller.cpp +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-graphics-controller.cpp @@ -759,7 +759,11 @@ Graphics::UniquePtr TestGraphicsController::CreateProgram(con for(auto& shader : *(programCreateInfo.shaderState)) { auto graphicsShader = Uncast(shader.shader); - if(memcmp(cacheEntry.shaders[shader.pipelineStage], graphicsShader->mCreateInfo.sourceData, graphicsShader->mCreateInfo.sourceSize)) + std::vector source; + source.resize(graphicsShader->mCreateInfo.sourceSize); + memcpy(&source[0], graphicsShader->mCreateInfo.sourceData, graphicsShader->mCreateInfo.sourceSize); + + if(!std::equal(source.begin(), source.end(), cacheEntry.shaders[shader.pipelineStage].begin())) { found = false; break; @@ -776,7 +780,8 @@ Graphics::UniquePtr TestGraphicsController::CreateProgram(con for(auto& shader : *(programCreateInfo.shaderState)) { auto graphicsShader = Uncast(shader.shader); - mProgramCache.back().shaders[shader.pipelineStage] = graphicsShader->mCreateInfo.sourceData; + mProgramCache.back().shaders[shader.pipelineStage].resize( graphicsShader->mCreateInfo.sourceSize ); + memcpy(&mProgramCache.back().shaders[shader.pipelineStage][0], graphicsShader->mCreateInfo.sourceData, graphicsShader->mCreateInfo.sourceSize); } return Graphics::MakeUnique(mProgramCache.back().programImpl); } diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-graphics-controller.h b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-graphics-controller.h index cbe78ec..14429ef 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-graphics-controller.h +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-graphics-controller.h @@ -337,8 +337,8 @@ public: struct ProgramCache { - std::map shaders; - TestGraphicsProgramImpl* programImpl; + std::map> shaders; + TestGraphicsProgramImpl* programImpl; }; std::vector mProgramCache; diff --git a/automated-tests/src/dali-toolkit/utc-Dali-Slider.cpp b/automated-tests/src/dali-toolkit/utc-Dali-Slider.cpp index e9cc39b..de98918 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-Slider.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-Slider.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Samsung Electronics Co., Ltd. + * Copyright (c) 2021 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -261,6 +261,8 @@ int UtcDaliSliderSignals1(void) DALI_TEST_CHECK(gSliderValueChangedCallBackCalled); DALI_TEST_CHECK(gSliderMarkCallBackCalled); DALI_TEST_CHECK(gSliderSlidingFinishedCallBackCalled); + + UnparentAndReset(slider); END_TEST; } @@ -446,6 +448,7 @@ int UtcDaliSetPropertyP(void) DALI_TEST_EQUALS( *url, "popupArrow2.png", TEST_LOCATION ); } + UnparentAndReset(slider); END_TEST; } diff --git a/automated-tests/src/dali-toolkit/utc-Dali-VisualFactory.cpp b/automated-tests/src/dali-toolkit/utc-Dali-VisualFactory.cpp index 0b7704c..ab67b9d 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-VisualFactory.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-VisualFactory.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Samsung Electronics Co., Ltd. + * Copyright (c) 2021 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -1150,6 +1150,7 @@ int UtcDaliNPatchVisualAuxiliaryImage01(void) Renderer renderer = dummy.GetRendererAt( 0 ); auto textures = renderer.GetTextures(); DALI_TEST_EQUALS( textures.GetTextureCount(), 2, TEST_LOCATION ); + UnparentAndReset(dummy); END_TEST; } @@ -1204,10 +1205,13 @@ int UtcDaliVisualFactoryGetNPatchVisualN1(void) TraceCallStack& textureTrace = gl.GetTextureTrace(); textureTrace.Enable(true); - DummyControl actor = DummyControl::New(true); - TestVisualAsynchronousRender( application, actor, visual ); + { + DummyControl actor = DummyControl::New(true); + TestVisualAsynchronousRender( application, actor, visual ); - DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION ); + DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION ); + UnparentAndReset(actor); + } END_TEST; } -- 2.7.4