mirror of
https://github.com/aristocratos/btop.git
synced 2024-05-20 20:32:50 +12:00
Fixed: Stall when clearing input queue on exit and queue is >1
This commit is contained in:
parent
a6dba19817
commit
e4ac3d9b21
|
@ -208,7 +208,6 @@ void clean_quit(int sig) {
|
|||
}
|
||||
|
||||
Config::write();
|
||||
Input::clear();
|
||||
|
||||
//? Wait for any remaining Tools::atomic_lock destructors to finish for max 1000ms
|
||||
for (int i = 0; Tools::active_locks > 0 and i < 100; i++) {
|
||||
|
@ -216,6 +215,7 @@ void clean_quit(int sig) {
|
|||
}
|
||||
|
||||
if (Term::initialized) {
|
||||
Input::clear();
|
||||
Term::restore();
|
||||
}
|
||||
|
||||
|
|
|
@ -95,7 +95,7 @@ namespace Input {
|
|||
string get() {
|
||||
string key;
|
||||
while (cin.rdbuf()->in_avail() > 0 and key.size() < 100) key += cin.get();
|
||||
if (cin.rdbuf()->in_avail() > 0) cin.ignore(cin.rdbuf()->in_avail());
|
||||
if (cin.rdbuf()->in_avail() > 0) clear();
|
||||
if (not key.empty()) {
|
||||
//? Remove escape code prefix if present
|
||||
if (key.substr(0, 2) == Fx::e) {
|
||||
|
@ -175,7 +175,12 @@ namespace Input {
|
|||
}
|
||||
|
||||
void clear() {
|
||||
if (cin.rdbuf()->in_avail() > 0) cin.ignore(SSmax);
|
||||
auto first_num = cin.rdbuf()->in_avail();
|
||||
while (cin.rdbuf()->in_avail() == first_num) {
|
||||
if (first_num-- == 0) break;
|
||||
cin.ignore(1);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void process(const string& key) {
|
||||
|
|
Loading…
Reference in a new issue