Fix crash when deleting macro with wait action

Note that this might still not be completely race free but should
improve the situation a lot.
This commit is contained in:
WarmUpTill
2021-08-07 09:55:56 +02:00
committed by WarmUpTill
parent 1474509cb9
commit 06ea7bf1d9
6 changed files with 14 additions and 6 deletions

View File

@@ -38,10 +38,12 @@ bool MacroActionWait::PerformAction()
sleep_duration);
std::unique_lock<std::mutex> lock(switcher->m);
auto r = switcher->cv.wait_for(
switcher->abortMacroWait = false;
switcher->macroWaitCv.wait_for(
lock,
std::chrono::milliseconds((long long)(sleep_duration * 1000)));
return r == std::cv_status::timeout;
std::chrono::milliseconds((long long)(sleep_duration * 1000)),
[] { return switcher->abortMacroWait.load(); });
return !switcher->abortMacroWait;
}
bool MacroActionWait::Save(obs_data_t *obj)