Unsubscribe dbus when object destroyed 18/199618/1
authorhyunho <hhstark.kang@samsung.com>
Wed, 13 Feb 2019 08:29:34 +0000 (17:29 +0900)
committerhyunho <hhstark.kang@samsung.com>
Wed, 13 Feb 2019 08:30:19 +0000 (17:30 +0900)
Change-Id: I57cece60af50048b8328a2e1b73ba657e6c16ba5
Signed-off-by: hyunho <hhstark.kang@samsung.com>
watchface-complication-provider/complication-provider-implementation.h
watchface-complication-provider/complication-provider.cc
watchface-complication/editables-container-implementation.h
watchface-complication/editables-container.cc

index 8f96ede..e4762c8 100644 (file)
@@ -33,7 +33,7 @@ namespace watchface_complication {
 
 class ComplicationProvider::Impl : IGDBus::IGDBusEvent {
  public:
-  virtual ~Impl() = default;
+  virtual ~Impl();
 
  private:
   friend class ComplicationProvider;
index 54b9aff..f45f5de 100644 (file)
@@ -72,6 +72,13 @@ ComplicationProvider::Impl::Impl(ComplicationProvider* parent,
   LOGI("subscribe signal %d", subscribe_id_);
 }
 
+ComplicationProvider::Impl::~Impl() {
+  LOGW("complication provider destroy %s", provider_id_.c_str());
+
+  if (subscribe_id_ > 0)
+    gdbus_.get()->UnSubscribeSignal(subscribe_id_);
+}
+
 ComplicationProvider::Impl::SenderInfo::SenderInfo(
     const std::string& sender_name, const char* sender_app_id,
     int watcher_id, std::string watch_name)
index cf7d76a..de79894 100644 (file)
@@ -31,7 +31,7 @@ namespace watchface_complication {
 
 class EditablesContainer::Impl : IGDBus::IGDBusEvent {
  public:
-  virtual ~Impl() = default;
+  virtual ~Impl();
 
  private:
   friend class EditablesContainer;
index 9e5f53a..81914d1 100644 (file)
@@ -50,6 +50,13 @@ EditablesContainer::Impl::Impl(EditablesContainer* parent, bool mock)
   LOGI("subscribe signal %d", subscribe_id_);
 }
 
+EditablesContainer::Impl::~Impl() {
+  LOGW("EditablesContainer destroy");
+
+  if (subscribe_id_ > 0)
+    gdbus_.get()->UnSubscribeSignal(subscribe_id_);
+}
+
 void EditablesContainer::Impl::OnSignal(GDBusConnection* connection,
                                         const std::string& sender_name,
                                         const std::string& object_path,