From 30b0ba7facf333209ea60db9f3b5820dc0f4d5f3 Mon Sep 17 00:00:00 2001 From: Renato Araujo Oliveira Filho Date: Thu, 31 Mar 2016 16:53:36 -0300 Subject: Update code as requested by reviewer. --- src/engine-eds.cpp | 16 +++++----------- src/main.cpp | 3 ++- src/myself.cpp | 13 ++++++++----- 3 files changed, 15 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/src/engine-eds.cpp b/src/engine-eds.cpp index 7450beb..585841b 100644 --- a/src/engine-eds.cpp +++ b/src/engine-eds.cpp @@ -50,7 +50,8 @@ class EdsEngine::Impl { public: - Impl(const std::unique_ptr &myself) + Impl(const std::shared_ptr &myself) + : m_myself(myself) { auto cancellable_deleter = [](GCancellable * c) { g_cancellable_cancel(c); @@ -59,9 +60,7 @@ public: m_cancellable = std::shared_ptr(g_cancellable_new(), cancellable_deleter); e_source_registry_new(m_cancellable.get(), on_source_registry_ready, this); - - m_myself = std::unique_ptr(new Myself()); - m_myself->emails().changed().connect([this](std::vector) { + m_myself->emails().changed().connect([this](const std::set &) { set_dirty_soon(); }); } @@ -1254,19 +1253,14 @@ private: ESourceRegistry* m_source_registry {}; guint m_rebuild_tag {}; time_t m_rebuild_deadline {}; - std::unique_ptr m_myself; + std::shared_ptr m_myself; }; /*** **** ***/ -EdsEngine::EdsEngine(): - p(new Impl(std::unique_ptr(new Myself))) -{ -} - -EdsEngine::EdsEngine(const std::unique_ptr &myself): +EdsEngine::EdsEngine(const std::shared_ptr &myself): p(new Impl(myself)) { } diff --git a/src/main.cpp b/src/main.cpp index fdd84b5..0da55a2 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -60,7 +61,7 @@ namespace if (!g_strcmp0("lightdm", g_get_user_name())) engine.reset(new MockEngine); else - engine.reset(new EdsEngine); + engine.reset(new EdsEngine(std::shared_ptr(new Myself))); return engine; } diff --git a/src/myself.cpp b/src/myself.cpp index 04c2126..0debfe4 100644 --- a/src/myself.cpp +++ b/src/myself.cpp @@ -41,8 +41,7 @@ Myself::Myself() bool Myself::isMyEmail(const std::string &email) { - auto emails = m_emails.get(); - return (std::find(emails.begin(), emails.end(), email) != emails.end()); + return m_emails.get().count(email) > 0; } void Myself::on_accounts_changed(AgManager *, guint, Myself *self) @@ -52,15 +51,19 @@ void Myself::on_accounts_changed(AgManager *, guint, Myself *self) void Myself::reloadEmails() { - std::vector emails; + std::set emails; auto manager = m_accounts_manager.get(); auto ids = ag_manager_list(manager); for (auto l=ids; l!=nullptr; l=l->next) { auto acc = ag_manager_get_account(manager, GPOINTER_TO_UINT(l->data)); - auto account_name = ag_account_get_display_name(acc); - emails.push_back(account_name); + if (acc) { + auto account_name = ag_account_get_display_name(acc); + if (account_name != nullptr) + emails.insert(account_name); + g_object_unref(acc); + } } ag_manager_list_free(ids); -- cgit v1.2.3