From 1e30e4254ad7c68d967e873da66b91c5b2fa3939 Mon Sep 17 00:00:00 2001 From: Michael Carlberg Date: Fri, 28 Oct 2016 14:56:11 +0200 Subject: [PATCH] fix(script): Make sure idle is called every iteration --- include/modules/meta.hpp | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/include/modules/meta.hpp b/include/modules/meta.hpp index 56726f85..aff4794b 100644 --- a/include/modules/meta.hpp +++ b/include/modules/meta.hpp @@ -440,14 +440,20 @@ namespace modules { CAST_MOD(Impl)->broadcast(); while (CONST_MOD(Impl).enabled()) { - std::lock_guard lck(this->m_updatelock); + CAST_MOD(Impl)->idle(); - if (!CAST_MOD(Impl)->has_event()) - CAST_MOD(Impl)->idle(); - else if (!CAST_MOD(Impl)->update()) - CAST_MOD(Impl)->idle(); - else - CAST_MOD(Impl)->broadcast(); + if (!CONST_MOD(Impl).enabled()) + break; + + std::lock_guard lck(this->m_updatelock); + { + if (!CAST_MOD(Impl)->has_event()) + continue; + else if (!CAST_MOD(Impl)->update()) + continue; + else + CAST_MOD(Impl)->broadcast(); + } } } catch (const module_error& err) { CAST_MOD(Impl)->halt(err.what());