ソースを参照

prevent polling threads from writing commands to cli until login successful

Missingmew 4 年 前
コミット
37d6a4b6db
3 ファイル変更12 行追加5 行削除
  1. 1 0
      gui/include/climanager.h
  2. 10 5
      gui/src/climanager.cpp
  3. 1 0
      gui/src/cmdmanager.cpp

+ 1 - 0
gui/include/climanager.h

@@ -7,6 +7,7 @@
 
 namespace CliManager {
 void setQmlHandler(QMLHandler *q);
+extern bool loggedin;
 
 void init();
 void writeToCli(QString s);

+ 10 - 5
gui/src/climanager.cpp

@@ -30,6 +30,7 @@ namespace CliManager {
 
 QMLHandler *qmlHandler;
 bool programActive = true;
+bool loggedin = false;
 int inpipefd[2];
 int outpipefd[2];
 
@@ -164,17 +165,21 @@ void CliManager::readPipeLoop() {
 
 void CliManager::notificationsLoop() {
 	while (programActive) {
-		std::this_thread::sleep_for(std::chrono::milliseconds(3000));
-		writeToCli("notifications");
-		writeToCli("extendedlist");
+		std::this_thread::sleep_for(std::chrono::seconds(3));
+		if (loggedin) {
+			writeToCli("notifications");
+			writeToCli("extendedlist");
+		}
 	}
 }
 
 void CliManager::statusLoop() {
 	while (programActive) {
 		std::this_thread::sleep_for(std::chrono::seconds(1));
-		writeToCli("status");
-		writeToCli("extendedstatus");
+		if (loggedin) {
+			writeToCli("status");
+			writeToCli("extendedstatus");
+		}
 	}
 }
 

+ 1 - 0
gui/src/cmdmanager.cpp

@@ -171,6 +171,7 @@ void CmdManager::handleLogin(Json::Value root) {
 	if (root["accept"] == true) {
 		emit qmlHandler->loginSignupPopupClose();
 		CliManager::writeToCli("extendedlist");
+		CliManager::loggedin = true;
 		qmlHandler->loadSettingsToGUI();
 	} else {
 		emit qmlHandler->loginSetStatus(root["error"].asString().c_str());