mirror of
https://github.com/GOSTSec/sgminer
synced 2025-01-10 23:08:07 +00:00
Force unlocking of the console lock on restart to avoid corrupting the console state when we finally quit.
This commit is contained in:
parent
3f9ccc1b27
commit
6c2a8d8be7
21
cgminer.c
21
cgminer.c
@ -3181,9 +3181,22 @@ static void disable_curses_windows(void)
|
|||||||
delwin(statuswin);
|
delwin(statuswin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Force locking of curses console_lock on shutdown since a dead thread might
|
||||||
|
* have grabbed the lock. */
|
||||||
|
static bool curses_active_forcelocked(void)
|
||||||
|
{
|
||||||
|
bool ret;
|
||||||
|
|
||||||
|
mutex_trylock(&console_lock);
|
||||||
|
ret = curses_active;
|
||||||
|
if (!ret)
|
||||||
|
unlock_curses();
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static void disable_curses(void)
|
static void disable_curses(void)
|
||||||
{
|
{
|
||||||
if (curses_active_locked()) {
|
if (curses_active_forcelocked()) {
|
||||||
use_curses = false;
|
use_curses = false;
|
||||||
curses_active = false;
|
curses_active = false;
|
||||||
disable_curses_windows();
|
disable_curses_windows();
|
||||||
@ -7359,15 +7372,11 @@ static void clean_up(bool restarting)
|
|||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
timeEndPeriod(1);
|
timeEndPeriod(1);
|
||||||
#endif
|
#endif
|
||||||
if (!restarting) {
|
|
||||||
/* Attempting to disable curses or print a summary during a
|
|
||||||
* restart can lead to a deadlock. */
|
|
||||||
#ifdef HAVE_CURSES
|
#ifdef HAVE_CURSES
|
||||||
disable_curses();
|
disable_curses();
|
||||||
#endif
|
#endif
|
||||||
if (!opt_realquiet && successful_connect)
|
if (!restarting && !opt_realquiet && successful_connect)
|
||||||
print_summary();
|
print_summary();
|
||||||
}
|
|
||||||
|
|
||||||
curl_global_cleanup();
|
curl_global_cleanup();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user