Przeglądaj źródła

App-Control-Funktion zum Beenden eines Prozesses im Zombie-State hinzugefügt.

Rind 4 lat temu
rodzic
commit
cb284391c2
5 zmienionych plików z 39 dodań i 4 usunięć
  1. 8 1
      README.md
  2. 1 1
      gfaqt.pro
  3. 21 2
      src/qappctrl.cpp
  4. 3 0
      src/qappctrl.h
  5. 6 0
      src/qappinfo.cpp

+ 8 - 1
README.md

@@ -5,7 +5,7 @@ Allgemeine Bibliothek für QML-Objekte und Objekte mit QT-Bindung, mit Ausnahme
 ---
 
 ***Version:***  
-libgfaqt.so.1.0.0  
+libgfaqt.so.1.1.0  
 
 ***SO-Name:***  
 libgfaqt.so.1
@@ -28,3 +28,10 @@ libgfaqt.so (-lgfaqt)
 **Installation:**
 
 * Wird durch die [GfaLibs-Installers](https://gogs.reru.org/GfA/GfaLibs-Installers) mitinstalliert.
+
+---
+
+**History:**
+
+* **1.1.0**<br>
+	Q-App-Control-Funktion zum Beenden eines Prozesses im Zombie-State hinzugefügt.

+ 1 - 1
gfaqt.pro

@@ -1,5 +1,5 @@
 TEMPLATE = lib
-VERSION = 1.0
+VERSION = 1.1
 QT += qml quick core
 CONFIG -= app_bundle
 CONFIG += c++11 shared thread

+ 21 - 2
src/qappctrl.cpp

@@ -35,6 +35,7 @@ QGfaAppCtrl::QGfaAppCtrl(QObject *pParent) :	QObject(pParent),
 	{
 		QGfaAppInfo *pai = new QGfaAppInfo(i, this);
 		connect(pai, SIGNAL(sendControlMessage(appid_t, ctrlmsg_t)), SLOT(onSendControlMessage(appid_t, ctrlmsg_t)));
+		connect(pai, SIGNAL(killApp(appid_t)), SLOT(onKillApp(appid_t)));
 		m_appInfo.append(pai);
 	}
 
@@ -119,7 +120,7 @@ bool QGfaAppCtrl::SubscribeStateEvents(appid_t nAppMask)
 {
 	if(m_hAC)
 	{
-		nAppMask &= ~m_nAppID;
+//		nAppMask &= ~m_nAppID;
 		m_nEvtSrcs |= nAppMask;
 		return ::GfaIpcAppCtrlSubscribeStateEvents(m_hAC, nAppMask);
 	}
@@ -252,6 +253,18 @@ void QGfaAppCtrl::timerEvent(QTimerEvent *event)
 						continue;
 					}
 
+					if(app == m_nAppID)
+					{
+						at.nCyclePresetUs	= 0;
+						at.nCycleLastUs		= 0;
+						at.nCycleMinUs		= 0;
+						at.nCycleMaxUs		= 0;
+						at.nWorkLastUs		= 0;
+						at.nWorkMinUs		= 0;
+						at.nWorkMaxUs		= 0;
+						at.nMaxHeartbeatDelay = 0;
+					}
+					
 					ai.setAppTimes(&at, state, bDoHeavyLoadUpdate);
 				}
 
@@ -311,12 +324,18 @@ void QGfaAppCtrl::onSendControlMessage(appid_t nAppID, ctrlmsg_t msg)
 		::GfaIpcAppCtrlSendCtrlMsg(m_hAC, nAppID, msg);
 }
 
+void QGfaAppCtrl::onKillApp(appid_t nAppID)
+{
+	if(m_hAC)
+		::GfaIpcAppCtrlKillApp(m_hAC, nAppID);
+}
+
 /////////////////////////////////////////////////////////////////////////////
 
 int QGfaAppCtrl::SetState(int nState)
 {
 	if(m_hAC)
-		::GfaIpcAppCtrlSetState(m_hAC, (GfaIpcAppStates)nState);
+		return ::GfaIpcAppCtrlSetState(m_hAC, (GfaIpcAppStates)nState);
 	return GIAS_Invalid;
 }
 

+ 3 - 0
src/qappctrl.h

@@ -162,12 +162,14 @@ public:
 	Q_INVOKABLE bool pause(void);
 	Q_INVOKABLE bool resume(void);
 	Q_INVOKABLE bool stop(void);
+	Q_INVOKABLE bool kill(void);
 
 signals:
 	void stateChanged(int val);
 	void stateTextChanged(const QString &val);
 	void nameChanged(const QString &val);
 	void sendControlMessage(appid_t nAppID, ctrlmsg_t msg);
+	void killApp(appid_t nAppID);
 	void cycIntChanged(quint64 val);
 	void cycCurChanged(quint64 val);
 	void cycMinChanged(quint64 val);
@@ -314,6 +316,7 @@ public:
 
 private slots:
 	void onSendControlMessage(appid_t nAppID, ctrlmsg_t msg);
+	void onKillApp(appid_t nAppID);
 	void timerEvent(QTimerEvent *event) override;
 
 private:

+ 6 - 0
src/qappinfo.cpp

@@ -470,3 +470,9 @@ bool QGfaAppInfo::stop(void)
 	emit sendControlMessage(m_nAppID, GFA_APPCTRL_CTRLMSG_STOP);
 	return true;
 }
+
+bool QGfaAppInfo::kill(void)
+{
+	emit killApp(m_nAppID);
+	return true;
+}