From cb255bc7d1041a2f84efc42b36eaaedac0255b92 Mon Sep 17 00:00:00 2001 From: Jeff Wang Date: Thu, 4 Apr 2019 02:04:20 -0400 Subject: [PATCH] fix quitting --- qt_gui/calculator.cpp | 9 ++++++++- qt_gui/calculator.h | 1 + qt_gui/main.cpp | 6 ++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/qt_gui/calculator.cpp b/qt_gui/calculator.cpp index 7c3305b..c864d8e 100644 --- a/qt_gui/calculator.cpp +++ b/qt_gui/calculator.cpp @@ -19,11 +19,18 @@ Calculator::Calculator(QObject *parent) : } Calculator::~Calculator(){ - ExitCalcMain = 1; + quit(); while (!calc_thread.isFinished()); //TODO: timeout while (!lcd_thread.isFinished()); //TODO: timeout } +void Calculator::quit(){ + ExitCalcMain = 1; + LcdAvailable.release(); + KeysAvailable.release(); + qDebug() << "quitting..."; +} + void Calculator::buttonClicked(const QString& in) { QStringList split = in.split(","); int8_t row = split[0].toInt(); diff --git a/qt_gui/calculator.h b/qt_gui/calculator.h index 79c11cf..876dc4a 100644 --- a/qt_gui/calculator.h +++ b/qt_gui/calculator.h @@ -52,6 +52,7 @@ signals: public slots: void buttonClicked(const QString& in); void updateLcd(); + void quit(); private: CalcMainThread calc_thread; diff --git a/qt_gui/main.cpp b/qt_gui/main.cpp index 2ed7d21..196633a 100644 --- a/qt_gui/main.cpp +++ b/qt_gui/main.cpp @@ -8,15 +8,21 @@ int main(int argc, char** argv) { QApplication app(argc, argv); + //QML engine QQmlApplicationEngine engine; engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); + //calculator Calculator calculator; engine.rootContext()->setContextProperty("_calculator", &calculator); + //fixed-width font for LCD QFont fixedFont = QFontDatabase::systemFont(QFontDatabase::FixedFont); fixedFont.setStyleHint(QFont::TypeWriter); engine.rootContext()->setContextProperty("_fixedFont", fixedFont); + //handle quit + QObject::connect(&app, &QApplication::aboutToQuit, &calculator, &Calculator::quit); + return app.exec(); }