fix quitting

This commit is contained in:
Jeff Wang 2019-04-04 02:04:20 -04:00
parent a93bdd9c78
commit cb255bc7d1
3 changed files with 15 additions and 1 deletions

View File

@ -19,11 +19,18 @@ Calculator::Calculator(QObject *parent) :
} }
Calculator::~Calculator(){ Calculator::~Calculator(){
ExitCalcMain = 1; quit();
while (!calc_thread.isFinished()); //TODO: timeout while (!calc_thread.isFinished()); //TODO: timeout
while (!lcd_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) { void Calculator::buttonClicked(const QString& in) {
QStringList split = in.split(","); QStringList split = in.split(",");
int8_t row = split[0].toInt(); int8_t row = split[0].toInt();

View File

@ -52,6 +52,7 @@ signals:
public slots: public slots:
void buttonClicked(const QString& in); void buttonClicked(const QString& in);
void updateLcd(); void updateLcd();
void quit();
private: private:
CalcMainThread calc_thread; CalcMainThread calc_thread;

View File

@ -8,15 +8,21 @@ int main(int argc, char** argv)
{ {
QApplication app(argc, argv); QApplication app(argc, argv);
//QML engine
QQmlApplicationEngine engine; QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
//calculator
Calculator calculator; Calculator calculator;
engine.rootContext()->setContextProperty("_calculator", &calculator); engine.rootContext()->setContextProperty("_calculator", &calculator);
//fixed-width font for LCD
QFont fixedFont = QFontDatabase::systemFont(QFontDatabase::FixedFont); QFont fixedFont = QFontDatabase::systemFont(QFontDatabase::FixedFont);
fixedFont.setStyleHint(QFont::TypeWriter); fixedFont.setStyleHint(QFont::TypeWriter);
engine.rootContext()->setContextProperty("_fixedFont", fixedFont); engine.rootContext()->setContextProperty("_fixedFont", fixedFont);
//handle quit
QObject::connect(&app, &QApplication::aboutToQuit, &calculator, &Calculator::quit);
return app.exec(); return app.exec();
} }