summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2016-08-24 09:36:11 -0700
committerGitHub <noreply@github.com>2016-08-24 09:36:11 -0700
commit646528bc53c37950b556be825de1ba9fa5303be3 (patch)
treed1ac59acb28768ee270e31d296453bbca2b5f55f
parent7a84a0e4eaafb9ac3b7179aef613ad1627fe214c (diff)
downloadqtlocation-mapboxgl-646528bc53c37950b556be825de1ba9fa5303be3.tar.gz
[core] Simplify Thread::invokeSync (#6128)
-rw-r--r--platform/default/default_file_source.cpp2
-rw-r--r--src/mbgl/util/thread.hpp14
-rw-r--r--test/util/thread_local.cpp6
3 files changed, 7 insertions, 15 deletions
diff --git a/platform/default/default_file_source.cpp b/platform/default/default_file_source.cpp
index 9d369210f8..6a94fa3866 100644
--- a/platform/default/default_file_source.cpp
+++ b/platform/default/default_file_source.cpp
@@ -156,7 +156,7 @@ void DefaultFileSource::setAccessToken(const std::string& accessToken) {
}
std::string DefaultFileSource::getAccessToken() const {
- return thread->invokeSync<std::string>(&Impl::getAccessToken);
+ return thread->invokeSync(&Impl::getAccessToken);
}
std::unique_ptr<AsyncRequest> DefaultFileSource::request(const Resource& resource, Callback callback) {
diff --git a/src/mbgl/util/thread.hpp b/src/mbgl/util/thread.hpp
index cd90e08049..31a56a4834 100644
--- a/src/mbgl/util/thread.hpp
+++ b/src/mbgl/util/thread.hpp
@@ -44,23 +44,15 @@ public:
}
// Invoke object->fn(args...) in the runloop thread, and wait for the result.
- template <class R, typename Fn, class... Args>
- R invokeSync(Fn fn, Args&&... args) {
+ template <typename Fn, class... Args>
+ auto invokeSync(Fn fn, Args&&... args) {
+ using R = std::result_of_t<Fn(Object, Args&&...)>;
std::packaged_task<R ()> task(std::bind(fn, object, args...));
std::future<R> future = task.get_future();
loop->invoke(std::move(task));
return future.get();
}
- // Invoke object->fn(args...) in the runloop thread, and wait for it to complete.
- template <typename Fn, class... Args>
- void invokeSync(Fn fn, Args&&... args) {
- std::packaged_task<void ()> task(std::bind(fn, object, args...));
- std::future<void> future = task.get_future();
- loop->invoke(std::move(task));
- future.get();
- }
-
private:
Thread(const Thread&) = delete;
Thread(Thread&&) = delete;
diff --git a/test/util/thread_local.cpp b/test/util/thread_local.cpp
index d2ec7f70a5..4ee7042580 100644
--- a/test/util/thread_local.cpp
+++ b/test/util/thread_local.cpp
@@ -43,9 +43,9 @@ TEST(ThreadLocalStorage, Basic) {
Thread<TestThread> thread2(context, &number2);
Thread<TestThread> thread3(context, &number3);
- EXPECT_EQ(number1, thread1.invokeSync<int>(&TestThread::getNumber));
- EXPECT_EQ(number2, thread2.invokeSync<int>(&TestThread::getNumber));
- EXPECT_EQ(number3, thread3.invokeSync<int>(&TestThread::getNumber));
+ EXPECT_EQ(number1, thread1.invokeSync(&TestThread::getNumber));
+ EXPECT_EQ(number2, thread2.invokeSync(&TestThread::getNumber));
+ EXPECT_EQ(number3, thread3.invokeSync(&TestThread::getNumber));
}
TEST(ThreadLocalStorage, NotSetReturnsNull) {