summaryrefslogtreecommitdiff
path: root/include/mbgl/util/thread.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/mbgl/util/thread.hpp')
-rw-r--r--include/mbgl/util/thread.hpp26
1 files changed, 15 insertions, 11 deletions
diff --git a/include/mbgl/util/thread.hpp b/include/mbgl/util/thread.hpp
index 0e9bd8f759..ab0403e44e 100644
--- a/include/mbgl/util/thread.hpp
+++ b/include/mbgl/util/thread.hpp
@@ -58,17 +58,21 @@ public:
platform::makeThreadLowPriority();
platform::attachThread();
- util::RunLoop loop_(util::RunLoop::Type::New);
- loop = &loop_;
- EstablishedActor<Object> establishedActor(loop_, object, std::move(capturedArgs));
-
- runningPromise.set_value();
-
- loop->run();
-
- (void) establishedActor;
-
- loop = nullptr;
+ // narrowing the scope to release the Object before we detach the thread
+ {
+ util::RunLoop loop_(util::RunLoop::Type::New);
+ loop = &loop_;
+ EstablishedActor<Object> establishedActor(loop_, object, std::move(capturedArgs));
+
+ runningPromise.set_value();
+
+ loop->run();
+
+ (void) establishedActor;
+
+ loop = nullptr;
+ }
+
platform::detachThread();
});
}