forked from lix-project/lix
Logger, ProgressBar: add a way to pause/resume
Add new virtual methods pause and resume to the Logger class, and implement them in ProgressBar to allow to pause the bar refreshing.
This commit is contained in:
parent
4dcc0a1b76
commit
85df7e7ea2
|
@ -72,6 +72,7 @@ private:
|
||||||
uint64_t corruptedPaths = 0, untrustedPaths = 0;
|
uint64_t corruptedPaths = 0, untrustedPaths = 0;
|
||||||
|
|
||||||
bool active = true;
|
bool active = true;
|
||||||
|
bool paused = false;
|
||||||
bool haveUpdate = true;
|
bool haveUpdate = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -120,6 +121,17 @@ public:
|
||||||
updateThread.join();
|
updateThread.join();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void pause() override {
|
||||||
|
state_.lock()->paused = true;
|
||||||
|
writeToStderr("\r\e[K");
|
||||||
|
}
|
||||||
|
|
||||||
|
void resume() override {
|
||||||
|
state_.lock()->paused = false;
|
||||||
|
writeToStderr("\r\e[K");
|
||||||
|
updateCV.notify_one();
|
||||||
|
}
|
||||||
|
|
||||||
bool isVerbose() override
|
bool isVerbose() override
|
||||||
{
|
{
|
||||||
return printBuildLogs;
|
return printBuildLogs;
|
||||||
|
@ -338,6 +350,7 @@ public:
|
||||||
{
|
{
|
||||||
auto nextWakeup = std::chrono::milliseconds::max();
|
auto nextWakeup = std::chrono::milliseconds::max();
|
||||||
|
|
||||||
|
if (state.paused) return nextWakeup;
|
||||||
state.haveUpdate = false;
|
state.haveUpdate = false;
|
||||||
if (!state.active) return nextWakeup;
|
if (!state.active) return nextWakeup;
|
||||||
|
|
||||||
|
|
|
@ -72,6 +72,9 @@ public:
|
||||||
|
|
||||||
virtual void stop() { };
|
virtual void stop() { };
|
||||||
|
|
||||||
|
virtual void pause() { };
|
||||||
|
virtual void resume() { };
|
||||||
|
|
||||||
// Whether the logger prints the whole build log
|
// Whether the logger prints the whole build log
|
||||||
virtual bool isVerbose() { return false; }
|
virtual bool isVerbose() { return false; }
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue