X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Fdali-toolkit-test-utils%2Ftoolkit-adaptor.cpp;h=40c73ae1a74d46275baf12363438b170904f67bf;hb=HEAD;hp=ca52b18743c0fde7936a80ea23fc5b01374a421f;hpb=b8b1144af5b695038e0f21d39c7a9df1f779c206;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-adaptor.cpp b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-adaptor.cpp index ca52b18..40c73ae 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-adaptor.cpp +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-adaptor.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 Samsung Electronics Co., Ltd. + * Copyright (c) 2024 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. @@ -28,8 +28,11 @@ #include #include #include +#include +#include #include #include +#include "dali-test-suite-utils.h" namespace Dali { @@ -65,6 +68,10 @@ Adaptor::Adaptor() Adaptor::~Adaptor() { gAdaptor = nullptr; + + // Ensure all threads and not-excuted tasks are destroyed. + // TODO : we'd better make some singletone service for toolkit UTC in future. + Test::AsyncTaskManager::DestroyAsyncTaskManager(); } void Adaptor::Start(Dali::Window window) @@ -72,6 +79,18 @@ void Adaptor::Start(Dali::Window window) AddWindow(&GetImplementation(window)); } +void Adaptor::Stop() +{ + if(mTestApplication) + { + Integration::Core& core = mTestApplication->GetCore(); + tet_printf("Adaptor::UnregisterProcessors\n"); + core.UnregisterProcessors(); + } + + mStopped = true; +} + Integration::Scene Adaptor::GetScene(Dali::Window window) { return window.GetScene(); @@ -79,23 +98,58 @@ Integration::Scene Adaptor::GetScene(Dali::Window window) bool Adaptor::AddIdle(CallbackBase* callback, bool hasReturnValue) { - mCallbacks.PushBack(callback); - return true; + if(ToolkitApplication::ADD_IDLE_SUCCESS) + { + if(hasReturnValue) + { + mReturnCallbacks.PushBack(callback); + } + else + { + mCallbacks.PushBack(callback); + } + } + return ToolkitApplication::ADD_IDLE_SUCCESS; } void Adaptor::RemoveIdle(CallbackBase* callback) { - mCallbacks.Erase(std::find_if(mCallbacks.Begin(), mCallbacks.End(), [&callback](CallbackBase* current) { return callback == current; })); + mCallbacks.Erase(std::remove_if(mCallbacks.Begin(), mCallbacks.End(), [&callback](CallbackBase* current) { return callback == current; }), mCallbacks.End()); + mReturnCallbacks.Erase(std::remove_if(mReturnCallbacks.Begin(), mReturnCallbacks.End(), [&callback](CallbackBase* current) { return callback == current; }), mReturnCallbacks.End()); } void Adaptor::RunIdles() { + Dali::Vector reusedCallbacks; + for(auto& callback : mReturnCallbacks) + { + bool retValue = CallbackBase::ExecuteReturn(*callback); + if(retValue) + { + reusedCallbacks.PushBack(callback); + } + } for(auto& callback : mCallbacks) { CallbackBase::Execute(*callback); } mCallbacks.Clear(); + mReturnCallbacks.Clear(); + mReturnCallbacks.Swap(reusedCallbacks); +} + +void Adaptor::RequestUpdateOnce() +{ + if(mTestApplication) + { + auto scene = mTestApplication->GetScene(); + if(scene) + { + tet_printf("Adaptor::RequestUpdateOnce()\n"); + scene.KeepRendering(0.0f); + } + } } Dali::RenderSurfaceInterface& Adaptor::GetSurface() @@ -172,12 +226,14 @@ void Adaptor::RemoveWindow(Internal::Adaptor::SceneHolder* window) void Adaptor::RegisterProcessor(Integration::Processor& processor, bool postProcessor) { Integration::Core& core = mTestApplication->GetCore(); + tet_printf("Adaptor::RegisterProcessor : %s\n", processor.GetProcessorName().data()); core.RegisterProcessor(processor, postProcessor); } void Adaptor::UnregisterProcessor(Integration::Processor& processor, bool postProcessor) { Integration::Core& core = mTestApplication->GetCore(); + tet_printf("Adaptor::UnregisterProcessor : %s\n", processor.GetProcessorName().data()); core.UnregisterProcessor(processor, postProcessor); } @@ -235,6 +291,7 @@ void Adaptor::Resume() void Adaptor::Stop() { + mImpl->Stop(); } bool Adaptor::AddIdle(CallbackBase* callback, bool hasReturnValue) @@ -311,7 +368,7 @@ Adaptor& Adaptor::Get() bool Adaptor::IsAvailable() { - return Internal::Adaptor::gAdaptor; + return Internal::Adaptor::gAdaptor && (!Internal::Adaptor::Adaptor::GetImpl(*Internal::Adaptor::gAdaptor).IsStopped()); } void Adaptor::NotifySceneCreated()