diff options
-rw-r--r-- | include/mbgl/util/thread.hpp | 26 |
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(); }); } |