From: Eunki, Hong Date: Tue, 26 Sep 2023 08:24:39 +0000 (+0900) Subject: [TIzen] Add API for check core shutting down or not X-Git-Tag: accepted/tizen/unified/20231004.100221~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b6f0405450f2a06b20141feb0a3c9e784444a95f;p=platform%2Fcore%2Fuifw%2Fdali-core.git [TIzen] Add API for check core shutting down or not This reverts commit a96bf5068c0104c9e040bc18b2a6a8d16c948be0. Change-Id: I4d4fe3152dba2cb198bb5bdc6419333fe22dfa93 --- diff --git a/automated-tests/src/dali/utc-Dali-Stage.cpp b/automated-tests/src/dali/utc-Dali-Stage.cpp index b9b8050..4105e04 100644 --- a/automated-tests/src/dali/utc-Dali-Stage.cpp +++ b/automated-tests/src/dali/utc-Dali-Stage.cpp @@ -387,6 +387,45 @@ int UtcDaliStageIsInstalledN(void) END_TEST; } +int UtcDaliStageIsShuttingDown(void) +{ + DALI_TEST_CHECK(!Stage::IsShuttingDown()); + + { + TestApplication application; + + DALI_TEST_CHECK(!Stage::IsShuttingDown()); + + Stage::GetCurrent(); + + DALI_TEST_CHECK(!Stage::IsShuttingDown()); + } + + // Core destroyed + DALI_TEST_CHECK(Stage::IsShuttingDown()); + END_TEST; +} + +int UtcDaliStageIsCoreInstalled(void) +{ + DALI_TEST_CHECK(!Stage::IsCoreInstalled()); + + { + TestApplication application; + + DALI_TEST_CHECK(Stage::IsCoreInstalled()); + + Stage::GetCurrent(); + + DALI_TEST_CHECK(Stage::IsCoreInstalled()); + } + + // Core destroyed + DALI_TEST_CHECK(Stage::IsCoreInstalled()); + END_TEST; +} + + int UtcDaliStageCopyConstructorP(void) { TestApplication application; diff --git a/dali/devel-api/common/stage.cpp b/dali/devel-api/common/stage.cpp index 02f361f..9e013b0 100644 --- a/dali/devel-api/common/stage.cpp +++ b/dali/devel-api/common/stage.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Samsung Electronics Co., Ltd. + * Copyright (c) 2023 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. @@ -59,6 +59,17 @@ bool Stage::IsInstalled() return Internal::Stage::IsInstalled(); } +bool Stage::IsShuttingDown() +{ + return Internal::Stage::IsShuttingDown(); +} + +bool Stage::IsCoreInstalled() +{ + return IsInstalled() || ///< Check if Core is installed now, + IsShuttingDown(); ///< or Core is shutting down now. +} + void Stage::Add(Actor& actor) { GetImplementation(*this).Add(GetImplementation(actor)); diff --git a/dali/devel-api/common/stage.h b/dali/devel-api/common/stage.h index cf271cf..ad94e37 100644 --- a/dali/devel-api/common/stage.h +++ b/dali/devel-api/common/stage.h @@ -2,7 +2,7 @@ #define DALI_STAGE_H /* - * Copyright (c) 2022 Samsung Electronics Co., Ltd. + * Copyright (c) 2023 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. @@ -114,6 +114,21 @@ public: static bool IsInstalled(); /** + * @brief Queries whether the Stage shutting down now; this should only return false during or before destruction of Dali core. + * + * @return True when Dali core destructor called. + */ + static bool IsShuttingDown(); + + /** + * @brief Queries whether we installed Dali core before, or not. + * It will be useful whether you want to check we are on valid ui thread or not, after Core initalized ensured. + * + * @return True when Dali core destructor called. + */ + static bool IsCoreInstalled(); + + /** * @brief Destructor. * * This is non-virtual since derived Handle types must not contain data or virtual methods. diff --git a/dali/internal/event/common/stage-impl.cpp b/dali/internal/event/common/stage-impl.cpp index d2309d6..ae0b7d2 100644 --- a/dali/internal/event/common/stage-impl.cpp +++ b/dali/internal/event/common/stage-impl.cpp @@ -112,6 +112,11 @@ bool Stage::IsInstalled() return ThreadLocalStorage::Created(); } +bool Stage::IsShuttingDown() +{ + return ThreadLocalStorage::IsShuttingDown(); +} + ObjectRegistry& Stage::GetObjectRegistry() { return ThreadLocalStorage::Get().GetObjectRegistry(); diff --git a/dali/internal/event/common/stage-impl.h b/dali/internal/event/common/stage-impl.h index 8711fcf..8b4abed 100644 --- a/dali/internal/event/common/stage-impl.h +++ b/dali/internal/event/common/stage-impl.h @@ -90,6 +90,11 @@ public: static bool IsInstalled(); /** + * @copydoc Dali::Stage::IsShuttingDown(). + */ + static bool IsShuttingDown(); + + /** * @copydoc Dali::Stage::GetObjectRegistry() */ ObjectRegistry& GetObjectRegistry();