summaryrefslogtreecommitdiff
path: root/src/mbgl/util/thread.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/util/thread.hpp')
-rw-r--r--src/mbgl/util/thread.hpp14
1 files changed, 3 insertions, 11 deletions
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;