jcs
/subtext
/amendments
/160
blanker: Don't start if there any sessions active, log when it runs
jcs made amendment 160 over 2 years ago
--- main.c Tue Jun 21 16:12:17 2022
+++ main.c Wed Jun 22 15:23:13 2022
@@ -226,14 +226,14 @@ void
handle_exit(void)
{
short n;
+
+ blanker_unblank();
for (n = 0; n < nfocusables; n++) {
if (focusables[n]->atexit)
focusables[n]->atexit(focusables[n]);
}
-
- RestoreHiddenMenuBar();
-
+
if (db->config.telnet_port)
telnet_atexit();
if (db->config.modem_port)
@@ -337,10 +337,10 @@ blanker_idle(void)
{
unsigned long t;
- if (!blanker_on &&
+ if (!blanker_on && !nsessions &&
(Time - blanker_last_blank > db->config.blanker_idle_seconds)) {
HideMenuBar();
-
+
blanker_win = NewWindow(0L, &screenBits.bounds, "\p", false,
plainDBox, (WindowPtr)-1L, true, 0);
if (!blanker_win)
@@ -362,13 +362,24 @@ blanker_idle(void)
void
blanker_unblank(void)
{
+ unsigned long rt;
+
if (!blanker_on || !blanker_win)
return;
+ rt = Time - blanker_last_blank;
+
ShowCursor();
DisposeWindow(blanker_win);
blanker_win = NULL;
RestoreHiddenMenuBar();
blanker_last_blank = Time;
blanker_on = false;
+
+ /*
+ * This will call back to blanker_unblank, so it must be done after
+ * blanker_on = false
+ */
+ logger_printf(logger, "[blanker] Blanked screen for %ld second%s",
+ rt, rt == 1 ? "" : "s");
}