Fix build error for gcc 12.2.0
[platform/core/appfw/app-core.git] / legacy / src / legacy / appcore_base.cc
index a516bdf..7ffd4f7 100644 (file)
@@ -22,6 +22,7 @@
 
 #include <list>
 #include <memory>
+#include <stdexcept>
 #include <string>
 
 #include "app_core_base.hh"
@@ -141,7 +142,6 @@ class AppCore : public AppCoreBase {
   void* data_;
 };
 
-std::unique_ptr<AppCore> __context;
 std::list<std::shared_ptr<AppCoreBase::EventBase>> __event_list;
 
 int __on_control(bundle* b, void* data) {
@@ -182,67 +182,85 @@ int __on_terminate(void* data) {
 using namespace tizen_cpp;
 
 extern "C" EXPORT_API int appcore_base_on_receive(aul_type type, bundle* b) {
-  if (__context.get() == nullptr)
+  auto* context = AppCoreBase::GetContext();
+  if (!context)
     return -1;
-  return __context->AppCoreBase::OnReceive(type, tizen_base::Bundle(b));
+
+  return context->AppCoreBase::OnReceive(type, tizen_base::Bundle(b));
 }
 
 extern "C" EXPORT_API int appcore_base_on_create(void) {
-  if (__context.get() == nullptr)
+  auto* context = AppCoreBase::GetContext();
+  if (!context)
     return -1;
-  return __context->AppCoreBase::OnCreate();
+
+  return context->AppCoreBase::OnCreate();
 }
 
 extern "C" EXPORT_API int appcore_base_on_control(bundle* b) {
-  if (__context.get() == nullptr)
+  auto* context = AppCoreBase::GetContext();
+  if (!context)
     return -1;
-  return __context->AppCoreBase::OnControl(
+
+  return context->AppCoreBase::OnControl(
       b ? tizen_base::Bundle(b) : tizen_base::Bundle());
 }
 
 extern "C" EXPORT_API int appcore_base_on_terminate(void) {
-  if (__context.get() == nullptr)
+  auto* context = AppCoreBase::GetContext();
+  if (!context)
     return -1;
-  return __context->AppCoreBase::OnTerminate();
+
+  return context->AppCoreBase::OnTerminate();
 }
 
 extern "C" EXPORT_API int appcore_base_on_set_i18n(void) {
-  if (__context.get() == nullptr)
+  auto* context = AppCoreBase::GetContext();
+  if (!context)
     return -1;
-  return __context->AppCoreBase::OnSetI18n();
+
+  return context->AppCoreBase::OnSetI18n();
 }
 
 extern "C" EXPORT_API void appcore_base_on_set_event(
     enum appcore_base_event event) {
-  if (__context.get() == nullptr)
+  auto* context = AppCoreBase::GetContext();
+  if (!context)
     return;
-  __context->AppCoreBase::OnSetEvent(
+
+  context->AppCoreBase::OnSetEvent(
       static_cast<AppCoreBase::IEvent::Type>(event));
 }
 
 extern "C" EXPORT_API void appcore_base_on_unset_event(
     enum appcore_base_event event) {
-  if (__context.get() == nullptr)
+  auto* context = AppCoreBase::GetContext();
+  if (!context)
     return;
-  __context->AppCoreBase::OnUnsetEvent(
+
+  context->AppCoreBase::OnUnsetEvent(
       static_cast<AppCoreBase::IEvent::Type>(event));
 }
 
 extern "C" EXPORT_API int appcore_base_on_trim_memory(void) {
-  if (__context.get() == nullptr)
+  auto* context = AppCoreBase::GetContext();
+  if (!context)
     return -1;
-  return __context->AppCoreBase::OnTrimMemory();
+
+  return context->AppCoreBase::OnTrimMemory();
 }
 
+static std::unique_ptr<AppCore> context;
+
 extern "C" EXPORT_API int appcore_base_init(appcore_base_ops ops,
     int argc, char** argv, void* data) {
-  __context.reset(new AppCore(ops, data));
+  context.reset(new AppCore(ops, data));
   try {
     for (auto& event : __event_list)
-      __context->AddEvent(std::move(event));
+      context->AddEvent(std::move(event));
 
     __event_list.clear();
-    __context->Init(argc, argv);
+    context->Init(argc, argv);
   } catch (const std::runtime_error&) {
     return -1;
   }
@@ -251,10 +269,10 @@ extern "C" EXPORT_API int appcore_base_init(appcore_base_ops ops,
 }
 
 extern "C" EXPORT_API void appcore_base_fini(void) {
-  if (__context.get() == nullptr)
+  if (!context)
     return;
-  __context->Fini();
-  __context.reset();
+  context->Fini();
+  context.reset();
 }
 
 extern "C" EXPORT_API appcore_base_ops appcore_base_get_default_ops(void) {
@@ -285,10 +303,11 @@ extern "C" EXPORT_API appcore_base_event_h appcore_base_add_event(
   if (ev == nullptr)
     return nullptr;
 
-  if (__context == nullptr) {
+  auto* context = AppCoreBase::GetContext();
+  if (!context) {
     __event_list.push_back(*ev);
   } else {
-    __context->AddEvent(*ev);
+    context->AddEvent(*ev);
   }
 
   return static_cast<appcore_base_event_h>(ev);
@@ -301,8 +320,10 @@ extern "C" EXPORT_API int appcore_base_remove_event(
     return -1;
 
   int ret;
-  if (__context == nullptr) {
+  auto* context = AppCoreBase::GetContext();
+  if (!context) {
     ret = -1;
+
     for (auto it = __event_list.begin(); it != __event_list.end(); ++it) {
       if (*it == *ev) {
         it = __event_list.erase(it);
@@ -311,7 +332,7 @@ extern "C" EXPORT_API int appcore_base_remove_event(
       }
     }
   } else {
-    ret = (__context->RemoveEvent(*ev) ? 0 : -1);
+    ret = (context->RemoveEvent(*ev) ? 0 : -1);
   }
 
   delete ev;
@@ -322,91 +343,103 @@ extern "C" DEPRECATED EXPORT_API int appcore_base_raise_event(
     void* event,
     enum appcore_base_event type) {
   LOGE("This api was deprecated since 7.0");
-  if (__context == nullptr)
+  auto* context = AppCoreBase::GetContext();
+  if (!context)
     return -1;
 
   return 0;
 }
 
 extern "C" EXPORT_API int appcore_base_flush_memory(void) {
-  if (__context == nullptr)
+  auto* context = AppCoreBase::GetContext();
+  if (!context)
     return -1;
 
-  __context->FlushMemory();
+  context->FlushMemory();
   return 0;
 }
 
 extern "C" DEPRECATED EXPORT_API int appcore_base_get_rotation_state(
     enum appcore_base_rm* curr) {
   LOGE("This api was deprecated since 7.0");
-  if (__context == nullptr)
+  auto* context = AppCoreBase::GetContext();
+  if (!context)
     return -1;
 
   return 0;
 }
 
 extern "C" EXPORT_API bool appcore_base_is_bg_allowed(void) {
-  if (__context == nullptr)
+  auto* context = AppCoreBase::GetContext();
+  if (!context)
     return false;
 
-  return __context->IsBgAllowed();
+  return context->IsBgAllowed();
 }
 
 extern "C" EXPORT_API bool appcore_base_is_suspended(void) {
-  if (__context == nullptr)
+  auto* context = AppCoreBase::GetContext();
+  if (!context)
     return false;
 
-  return __context->IsSuspended();
+  return context->IsSuspended();
 }
 
 extern "C" EXPORT_API void appcore_base_toggle_suspended_state(void) {
-  if (__context == nullptr)
+  auto* context = AppCoreBase::GetContext();
+  if (!context)
     return;
 
-  __context->ToggleSuspendedState();
+  context->ToggleSuspendedState();
 }
 
 extern "C" EXPORT_API int appcore_base_set_i18n(const char* domain_name,
                                                 const char* dir_name) {
-  if (__context == nullptr || domain_name == nullptr || dir_name == nullptr)
+  auto* context = AppCoreBase::GetContext();
+  if (!context || domain_name == nullptr || dir_name == nullptr)
     return -1;
 
-  return __context->SetI18n(domain_name, dir_name);
+  return context->SetI18n(domain_name, dir_name);
 }
 
 extern "C" EXPORT_API void appcore_base_exit(void) {
   aul_status_update(STATUS_DYING);
-  if (__context == nullptr)
+  auto* context = AppCoreBase::GetContext();
+  if (!context)
     return;
 
-  __context->Exit();
+  context->Exit();
 }
 
 extern "C" EXPORT_API void appcore_base_add_suspend_timer(void) {
-  if (__context == nullptr)
+  auto* context = AppCoreBase::GetContext();
+  if (!context)
     return;
 
-  __context->AddSuspendTimer();
+  context->AddSuspendTimer();
 }
 
 extern "C" EXPORT_API void appcore_base_remove_suspend_timer(void) {
-  if (__context == nullptr)
+  auto* context = AppCoreBase::GetContext();
+  if (!context)
     return;
 
-  __context->RemoveSuspendTimer();
+  context->RemoveSuspendTimer();
 }
 
 extern "C" EXPORT_API void appcore_base_set_display_state(int display_state) {
-  if (__context == nullptr)
+  auto* context = AppCoreBase::GetContext();
+  if (!context)
     return;
 
-  __context->SetDisplayState(
+  context->SetDisplayState(
       static_cast<AppCoreBase::DisplayState>(display_state));
 }
 
 extern "C" EXPORT_API int appcore_base_get_display_state(void) {
-  if (__context == nullptr)
+  auto* context = AppCoreBase::GetContext();
+  if (!context)
     return -1;
 
-  return __context->GetDisplayState();
+  return context->GetDisplayState();
 }