From 7bbd49c72c0daa7036a575a49f6cf13bf8a7020e Mon Sep 17 00:00:00 2001 From: Mike Morris Date: Wed, 12 Oct 2016 22:32:55 -0400 Subject: [PATCH] [core] extract weak_ptr mailbox->receive into Mailbox::maybeReceive --- include/mbgl/util/run_loop.hpp | 4 +--- platform/default/thread_pool.cpp | 4 +--- platform/node/src/node_thread_pool.cpp | 4 +--- src/mbgl/actor/mailbox.cpp | 6 ++++++ src/mbgl/actor/mailbox.hpp | 2 ++ 5 files changed, 11 insertions(+), 9 deletions(-) diff --git a/include/mbgl/util/run_loop.hpp b/include/mbgl/util/run_loop.hpp index 939531d6c..5236850d8 100644 --- a/include/mbgl/util/run_loop.hpp +++ b/include/mbgl/util/run_loop.hpp @@ -83,9 +83,7 @@ private: void schedule(std::weak_ptr mailbox) override { invoke([mailbox] () { - if (auto locked = mailbox.lock()) { - locked->receive(); - } + Mailbox::maybeReceive(mailbox); }); } diff --git a/platform/default/thread_pool.cpp b/platform/default/thread_pool.cpp index 7108312c5..b7e02db15 100644 --- a/platform/default/thread_pool.cpp +++ b/platform/default/thread_pool.cpp @@ -22,9 +22,7 @@ ThreadPool::ThreadPool(std::size_t count) { queue.pop(); lock.unlock(); - if (auto locked = mailbox.lock()) { - locked->receive(); - } + Mailbox::maybeReceive(mailbox); } }); } diff --git a/platform/node/src/node_thread_pool.cpp b/platform/node/src/node_thread_pool.cpp index a9faef6f0..fd6df575f 100644 --- a/platform/node/src/node_thread_pool.cpp +++ b/platform/node/src/node_thread_pool.cpp @@ -27,9 +27,7 @@ NodeThreadPool::Worker::Worker(std::weak_ptr mailbox_) mailbox(std::move(mailbox_)) {}; void NodeThreadPool::Worker::Execute() { - if (auto locked = mailbox.lock()) { - locked->receive(); - } + mbgl::Mailbox::maybeReceive(mailbox); } void NodeThreadPool::Worker::WorkComplete() { diff --git a/src/mbgl/actor/mailbox.cpp b/src/mbgl/actor/mailbox.cpp index ae3c0967a..5f6062983 100644 --- a/src/mbgl/actor/mailbox.cpp +++ b/src/mbgl/actor/mailbox.cpp @@ -52,4 +52,10 @@ void Mailbox::receive() { } } +void Mailbox::maybeReceive(std::weak_ptr mailbox) { + if (auto locked = mailbox.lock()) { + locked->receive(); + } +} + } // namespace mbgl diff --git a/src/mbgl/actor/mailbox.hpp b/src/mbgl/actor/mailbox.hpp index 5d5e8cb92..cff0de243 100644 --- a/src/mbgl/actor/mailbox.hpp +++ b/src/mbgl/actor/mailbox.hpp @@ -18,6 +18,8 @@ public: void close(); void receive(); + static void maybeReceive(std::weak_ptr); + private: Scheduler& scheduler;