diff options
author | Mike Morris <mikemorris@users.noreply.github.com> | 2016-10-12 22:32:55 -0400 |
---|---|---|
committer | Mike Morris <mikemorris@users.noreply.github.com> | 2016-10-20 14:39:11 -0400 |
commit | 7bbd49c72c0daa7036a575a49f6cf13bf8a7020e (patch) | |
tree | ee3ba73132d35d789640f59c860fddf2a4a49ef8 | |
parent | a894870fb8f99632570ec1379fb55b287273fc58 (diff) | |
download | qtlocation-mapboxgl-7bbd49c72c0daa7036a575a49f6cf13bf8a7020e.tar.gz |
[core] extract weak_ptr mailbox->receive into Mailbox::maybeReceive
-rw-r--r-- | include/mbgl/util/run_loop.hpp | 4 | ||||
-rw-r--r-- | platform/default/thread_pool.cpp | 4 | ||||
-rw-r--r-- | platform/node/src/node_thread_pool.cpp | 4 | ||||
-rw-r--r-- | src/mbgl/actor/mailbox.cpp | 6 | ||||
-rw-r--r-- | 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 939531d6c3..5236850d83 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> 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 7108312c58..b7e02db157 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 a9faef6f09..fd6df575fc 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<mbgl::Mailbox> 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 ae3c0967af..5f60629833 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> 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 5d5e8cb924..cff0de243a 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<Mailbox>); + private: Scheduler& scheduler; |