Add MacroWasPausedSince()

It will allow you to query if the macro was paused since a given time
point.
It checks this by comparing the time point against the time point at
which the macro was last paused.
This commit is contained in:
WarmUpTill 2024-01-24 17:38:20 +01:00 committed by WarmUpTill
parent 9855f0c64a
commit 0c97b3be4a
4 changed files with 20 additions and 0 deletions

View File

@ -100,6 +100,13 @@ bool MacroIsPaused(Macro *macro)
return macro ? macro->Paused() : true;
}
bool MacroWasPausedSince(
Macro *macro,
const std::chrono::high_resolution_clock::time_point &time)
{
return macro ? macro->WasPausedSince(time) : false;
}
void AddMacroHelperThread(Macro *macro, std::thread &&newThread)
{
if (!macro) {

View File

@ -2,6 +2,7 @@
#include "export-symbol-helper.hpp"
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <deque>
#include <optional>
@ -46,6 +47,8 @@ EXPORT int64_t MillisecondsSinceMacroConditionCheck(Macro *);
EXPORT bool MacroIsStopped(Macro *);
EXPORT bool MacroIsPaused(Macro *);
EXPORT bool
MacroWasPausedSince(Macro *, const std::chrono::high_resolution_clock::time_point &);
EXPORT void AddMacroHelperThread(Macro *, std::thread &&);

View File

@ -327,6 +327,12 @@ bool Macro::DockIsVisible() const
return _dock && _dockAction && _dock->isVisible();
}
bool Macro::WasPausedSince(
const std::chrono::high_resolution_clock::time_point &time) const
{
return _lastUnpauseTime > time;
}
void Macro::SetMatchOnChange(bool onChange)
{
_performActionsOnChange = onChange;
@ -335,6 +341,7 @@ void Macro::SetMatchOnChange(bool onChange)
void Macro::SetPaused(bool pause)
{
if (_paused && !pause) {
_lastUnpauseTime = std::chrono::high_resolution_clock::now();
ResetTimers();
}
_paused = pause;

View File

@ -36,6 +36,8 @@ public:
bool RunInParallel() const { return _runInParallel; }
void SetPaused(bool pause = true);
bool Paused() const { return _paused; }
bool WasPausedSince(
const std::chrono::high_resolution_clock::time_point &) const;
void SetMatchOnChange(bool onChange);
bool MatchOnChange() const { return _performActionsOnChange; }
void SetSkipExecOnStart(bool skip) { _skipExecOnStart = skip; }
@ -146,6 +148,7 @@ private:
bool _stop = false;
bool _done = true;
std::chrono::high_resolution_clock::time_point _lastCheckTime{};
std::chrono::high_resolution_clock::time_point _lastUnpauseTime{};
std::chrono::high_resolution_clock::time_point _lastExecutionTime{};
std::thread _backgroundThread;
std::vector<std::thread> _helperThreads;