summaryrefslogtreecommitdiff
path: root/src/mbgl/util/work_request.cpp
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2015-05-02 13:31:56 -0400
committerJohn Firebaugh <john.firebaugh@gmail.com>2015-05-04 15:09:19 -0700
commit5c7867f435f9d94109ce11fcbbd153b016e02fe0 (patch)
tree5879bdf22b3f8d757c730378b0a2dc49a81fa15d /src/mbgl/util/work_request.cpp
parente476fcbf3be861b4b080d647fd7d7fa71570c86a (diff)
downloadqtlocation-mapboxgl-5c7867f435f9d94109ce11fcbbd153b016e02fe0.tar.gz
Join worker tasks before destroying TileData
Fixes #1309
Diffstat (limited to 'src/mbgl/util/work_request.cpp')
-rw-r--r--src/mbgl/util/work_request.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/mbgl/util/work_request.cpp b/src/mbgl/util/work_request.cpp
new file mode 100644
index 0000000000..05fe535802
--- /dev/null
+++ b/src/mbgl/util/work_request.cpp
@@ -0,0 +1,34 @@
+#include <mbgl/util/work_request.hpp>
+
+namespace mbgl {
+
+WorkRequest::WorkRequest() = default;
+
+WorkRequest::WorkRequest(Future&& future)
+ : complete(std::move(future)) {
+}
+
+WorkRequest::WorkRequest(WorkRequest&& o)
+ : complete(std::move(o.complete)) {
+}
+
+WorkRequest::~WorkRequest() {
+ if (complete.valid()) {
+ complete.get();
+ }
+}
+
+WorkRequest& WorkRequest::operator=(WorkRequest&& o) {
+ complete = std::move(o.complete);
+ return *this;
+}
+
+WorkRequest::operator bool() const {
+ return complete.valid();
+}
+
+void WorkRequest::join() {
+ complete.get();
+}
+
+}