@@ -384,24 +384,24 @@ Thread *Engine::startScript(std::shared_ptr<Block> topLevelBlock, Target *target
384384 return pushThread (topLevelBlock, target).get ();
385385}
386386
387- void Engine::broadcast (int index, Thread *sender)
387+ void Engine::broadcast (int index, Thread *sender, bool wait )
388388{
389389 if (index < 0 || index >= m_broadcasts.size ())
390390 return ;
391391
392- broadcastByPtr (m_broadcasts[index].get (), sender);
392+ broadcastByPtr (m_broadcasts[index].get (), sender, wait );
393393}
394394
395- void Engine::broadcastByPtr (Broadcast *broadcast, Thread *sender)
395+ void Engine::broadcastByPtr (Broadcast *broadcast, Thread *sender, bool wait )
396396{
397397 startHats (HatType::BroadcastReceived, { { HatField::BroadcastOption, broadcast } }, nullptr );
398- addBroadcastPromise (broadcast, sender);
398+ addBroadcastPromise (broadcast, sender, wait );
399399}
400400
401- void Engine::startBackdropScripts (Broadcast *broadcast, Thread *sender)
401+ void Engine::startBackdropScripts (Broadcast *broadcast, Thread *sender, bool wait )
402402{
403403 startHats (HatType::BackdropChanged, { { HatField::Backdrop, broadcast->name () } }, nullptr );
404- addBroadcastPromise (broadcast, sender);
404+ addBroadcastPromise (broadcast, sender, wait );
405405}
406406
407407void Engine::stopScript (Thread *vm)
@@ -1868,7 +1868,7 @@ void Engine::addRunningScript(std::shared_ptr<Thread> thread)
18681868 m_threads.push_back (thread);
18691869}
18701870
1871- void Engine::addBroadcastPromise (Broadcast *broadcast, Thread *sender)
1871+ void Engine::addBroadcastPromise (Broadcast *broadcast, Thread *sender, bool wait )
18721872{
18731873 assert (broadcast);
18741874 assert (sender);
@@ -1879,7 +1879,8 @@ void Engine::addBroadcastPromise(Broadcast *broadcast, Thread *sender)
18791879 if (it != m_broadcastSenders.cend () && std::find_if (m_threads.begin (), m_threads.end (), [&it](std::shared_ptr<Thread> thread) { return thread.get () == it->second ; }) != m_threads.end ())
18801880 it->second ->resolvePromise ();
18811881
1882- m_broadcastSenders[broadcast] = sender;
1882+ if (wait)
1883+ m_broadcastSenders[broadcast] = sender;
18831884}
18841885
18851886std::shared_ptr<Thread> Engine::pushThread (std::shared_ptr<Block> block, Target *target)
0 commit comments