Modify Quit method of Service
authorHwankyu Jhun <h.jhun@samsung.com>
Tue, 8 Apr 2025 23:40:14 +0000 (08:40 +0900)
committerHwankyu Jhun <h.jhun@samsung.com>
Tue, 8 Apr 2025 23:40:14 +0000 (08:40 +0900)
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
src/service.cc
src/service.hh

index 6ceca22195ea308704b0067d43f1488cc0a52858..1dade7f114dbb32d7e59e2f5c446683f961093a8 100644 (file)
@@ -151,22 +151,31 @@ void Service::Run() {
   running_ = true;
 }
 
+void Service::QuitSelf() {
+  auto self = shared_from_this();
+  tizen_core_task_quit(task_);
+  OnBaseDestroy();
+}
+
 void Service::Quit() {
   if (!IsRunning()) return;
 
+  running_ = false;
+  if (tid_ == gettid()) {
+    QuitSelf();
+    return;
+  }
+
   tizen_core_source_h source = nullptr;
   tizen_core_add_idle_job(
       core_,
       [](void* user_data) -> bool {
         auto* service = static_cast<Service*>(user_data);
-        auto service_ptr = service->shared_from_this();
-        service->OnBaseDestroy();
+        service->QuitSelf();
         return false;
       },
       this, &source);
-
-  tizen_core_task_quit(task_);
-  running_ = false;
+  if (source == nullptr) _E("Failed to add idle job");
 }
 
 void Service::SendMessage(const tizen_base::Bundle& envelope) {
index 8b8f7fb90a83a0f6b0b2bb5ae05a4bd5dc2009b8..b06288ecb567d80f4dae6066ecdb3ff5d4277b2a 100644 (file)
@@ -74,6 +74,7 @@ class Service : public std::enable_shared_from_this<Service> {
   void OnBaseMessageReceived(const std::string& sender,
                              const tizen_base::Bundle& envelope);
   void NotifyStateChanged();
+  void QuitSelf();
 
   bool Init();
   void Shutdown();