[TIzen] Add API for check core shutting down or not
authorEunki, Hong <eunkiki.hong@samsung.com>
Tue, 26 Sep 2023 08:24:39 +0000 (17:24 +0900)
committerEunki, Hong <eunkiki.hong@samsung.com>
Tue, 26 Sep 2023 08:24:41 +0000 (17:24 +0900)
This reverts commit a96bf5068c0104c9e040bc18b2a6a8d16c948be0.

Change-Id: I4d4fe3152dba2cb198bb5bdc6419333fe22dfa93

automated-tests/src/dali/utc-Dali-Stage.cpp
dali/devel-api/common/stage.cpp
dali/devel-api/common/stage.h
dali/internal/event/common/stage-impl.cpp
dali/internal/event/common/stage-impl.h

index b9b8050..4105e04 100644 (file)
@@ -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;
index 02f361f..9e013b0 100644 (file)
@@ -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));
index cf271cf..ad94e37 100644 (file)
@@ -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.
index d2309d6..ae0b7d2 100644 (file)
@@ -112,6 +112,11 @@ bool Stage::IsInstalled()
   return ThreadLocalStorage::Created();
 }
 
+bool Stage::IsShuttingDown()
+{
+  return ThreadLocalStorage::IsShuttingDown();
+}
+
 ObjectRegistry& Stage::GetObjectRegistry()
 {
   return ThreadLocalStorage::Get().GetObjectRegistry();
index 8711fcf..8b4abed 100644 (file)
@@ -90,6 +90,11 @@ public:
   static bool IsInstalled();
 
   /**
+   * @copydoc Dali::Stage::IsShuttingDown().
+   */
+  static bool IsShuttingDown();
+
+  /**
    * @copydoc Dali::Stage::GetObjectRegistry()
    */
   ObjectRegistry& GetObjectRegistry();