From 855d1ca1b5abe782b405a658e1cd2183b73b5a46 Mon Sep 17 00:00:00 2001 From: peri4 Date: Thu, 26 Dec 2024 16:12:02 +0300 Subject: [PATCH] try to fix hang on exit by keyboard --- libs/main/console/pikbdlistener.cpp | 4 ++++ libs/main/console/pikbdlistener.h | 11 +++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/libs/main/console/pikbdlistener.cpp b/libs/main/console/pikbdlistener.cpp index e5034f57..4c6185bd 100644 --- a/libs/main/console/pikbdlistener.cpp +++ b/libs/main/console/pikbdlistener.cpp @@ -542,6 +542,10 @@ void PIKbdListener::readKeyboard() { void PIKbdListener::stop() { PIThread::stop(); +#ifndef WINDOWS + char c = '\n'; + write(0, &c, 1); +#endif } diff --git a/libs/main/console/pikbdlistener.h b/libs/main/console/pikbdlistener.h index fb686304..69753b4c 100644 --- a/libs/main/console/pikbdlistener.h +++ b/libs/main/console/pikbdlistener.h @@ -29,10 +29,13 @@ #include "pithread.h" #include "pitime.h" -#define WAIT_FOR_EXIT \ - while (!PIKbdListener::exiting) \ - piMSleep(PIP_MIN_MSLEEP * 5); \ - if (PIKbdListener::instance()) PIKbdListener::instance()->stopAndWait(); +#define WAIT_FOR_EXIT \ + while (!PIKbdListener::exiting) \ + piMSleep(PIP_MIN_MSLEEP * 5); \ + if (PIKbdListener::instance()) { \ + PIKbdListener::instance()->stop(); \ + PIKbdListener::instance()->waitForFinish(); \ + } class PIP_EXPORT PIKbdListener: public PIThread {