From 5e00a2a764efcab85db63f20d1d97a87f79a6ece Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Paczos?= Date: Fri, 24 May 2019 12:03:25 +0200 Subject: [core] limit thread's scope to release the Object before detaching the thread --- include/mbgl/util/thread.hpp | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) (limited to 'include') 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 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 establishedActor(loop_, object, std::move(capturedArgs)); + + runningPromise.set_value(); + + loop->run(); + + (void) establishedActor; + + loop = nullptr; + } + platform::detachThread(); }); } -- cgit v1.2.1