From 682d510e925bb30ad898c369d7516b00bbee2d04 Mon Sep 17 00:00:00 2001 From: jusung son Date: Fri, 11 May 2018 16:53:28 +0900 Subject: [PATCH] Fix resource leak Change-Id: I57d8b865fc6c2bb49cd519c4ccc7bb353a5531ca Signed-off-by: jusung son --- watchface-complication/complication-implementation.h | 4 ++-- watchface-complication/complication.cc | 10 ++++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/watchface-complication/complication-implementation.h b/watchface-complication/complication-implementation.h index cda1409..2523c4b 100644 --- a/watchface-complication/complication-implementation.h +++ b/watchface-complication/complication-implementation.h @@ -45,7 +45,7 @@ class Complication::Impl : ComplicationConnector::IEventListener { GVariant* parameters) override; void OnVanish(const std::string& name) override; void OnAppear(const std::string& name, const std::string& name_owner) override; - virtual ~Impl() = default; + virtual ~Impl(); private: friend class Complication; @@ -92,7 +92,7 @@ class Complication::Impl : ComplicationConnector::IEventListener { static const std::string provider_id_key_; static const std::string provider_type_key_; IEditable::EditableState ed_state_ = Complete; - guint periodic_timer_; + guint periodic_timer_ = 0; }; } // namespace watchface_complication diff --git a/watchface-complication/complication.cc b/watchface-complication/complication.cc index d1fc70f..9067bee 100644 --- a/watchface-complication/complication.cc +++ b/watchface-complication/complication.cc @@ -45,8 +45,6 @@ Complication::Complication(int id, int support_types, } Complication::~Complication() { - LOGE("complication destroy %d", impl_->complication_id_); - ComplicationConnector::GetInst().UnSubscribeSignal(impl_->subscribe_id_); } Complication::Impl::Impl(Complication* parent, int id, @@ -66,6 +64,14 @@ Complication::Impl::Impl(Complication* parent, int id, LOGI("subscribe signal %d", subscribe_id_); } +Complication::Impl::~Impl() { + LOGI("complication destroy %d", complication_id_); + ComplicationConnector::GetInst().UnSubscribeSignal(subscribe_id_); + + if (periodic_timer_) + g_source_remove(periodic_timer_); +} + void Complication::Impl::OnVanish(const std::string& name) { } -- 2.7.4