diff options
author | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2010-07-05 17:14:45 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2010-07-05 17:14:45 +0200 |
commit | 9bb67101c5daa42f879f2fcf884277c5fd23bed4 (patch) | |
tree | de98a7c3486831ec7aaa961ce3e1b2bb049b2fbc /src | |
parent | 1ff095eec2c7b5ee63449c0b9c705cfe79d96e67 (diff) | |
download | qt-creator-9bb67101c5daa42f879f2fcf884277c5fd23bed4.tar.gz |
Trk[TCF]: Proper exit handling
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/debugger/gdb/tcftrkgdbadapter.cpp | 13 | ||||
-rw-r--r-- | src/shared/symbianutils/tcftrkdevice.cpp | 10 | ||||
-rw-r--r-- | src/shared/symbianutils/tcftrkdevice.h | 5 |
3 files changed, 20 insertions, 8 deletions
diff --git a/src/plugins/debugger/gdb/tcftrkgdbadapter.cpp b/src/plugins/debugger/gdb/tcftrkgdbadapter.cpp index 380e304373..fd2208e14b 100644 --- a/src/plugins/debugger/gdb/tcftrkgdbadapter.cpp +++ b/src/plugins/debugger/gdb/tcftrkgdbadapter.cpp @@ -598,8 +598,11 @@ void TcfTrkGdbAdapter::handleGdbServerCommand(const QByteArray &cmd) else if (cmd == "k" || cmd.startsWith("vKill")) { // Kill inferior process logMessage(msgGdbPacket(QLatin1String("kill"))); - m_trkDevice->sendProcessTerminateCommand(TcfTrkCallback(), - m_tcfProcessId); + // Requires id of main thread to terminate. + // Note that calling 'Settings|set|removeExecutable' crashes TCF TRK, + // so, it is apparently not required. + m_trkDevice->sendRunControlTerminateCommand(TcfTrkCallback(), + mainThreadContextId()); } else if (cmd.startsWith('m')) { @@ -1066,12 +1069,6 @@ void TcfTrkGdbAdapter::cleanup() if (!m_trkIODevice.isNull()) { QAbstractSocket *socket = qobject_cast<QAbstractSocket *>(m_trkIODevice.data()); const bool isOpen = socket ? socket->state() == QAbstractSocket::ConnectedState : m_trkIODevice->isOpen(); - if (isOpen) { // Not sure if that is required: Remove Trk's context? - if (!m_remoteExecutable.isEmpty() && m_uid) { - m_trkDevice->sendSettingsRemoveExecutableCommand(m_remoteExecutable, m_uid); - m_uid = 0; - } - } if (isOpen) { if (socket) { socket->disconnect(); diff --git a/src/shared/symbianutils/tcftrkdevice.cpp b/src/shared/symbianutils/tcftrkdevice.cpp index 4dfb41637f..723d5e95d8 100644 --- a/src/shared/symbianutils/tcftrkdevice.cpp +++ b/src/shared/symbianutils/tcftrkdevice.cpp @@ -689,6 +689,16 @@ void TcfTrkDevice::sendProcessTerminateCommand(const TcfTrkCallback &callBack, sendTcfTrkMessage(MessageWithReply, ProcessesService, "terminate", data, callBack, cookie); } +void TcfTrkDevice::sendRunControlTerminateCommand(const TcfTrkCallback &callBack, + const QByteArray &id, + const QVariant &cookie) +{ + QByteArray data; + JsonInputStream str(data); + str << id; + sendTcfTrkMessage(MessageWithReply, RunControlService, "terminate", data, callBack, cookie); +} + // Non-standard: Remove executable from settings void TcfTrkDevice::sendSettingsRemoveExecutableCommand(const QString &binaryIn, unsigned uid, diff --git a/src/shared/symbianutils/tcftrkdevice.h b/src/shared/symbianutils/tcftrkdevice.h index bfe8bbbbf3..bb4c1849a0 100644 --- a/src/shared/symbianutils/tcftrkdevice.h +++ b/src/shared/symbianutils/tcftrkdevice.h @@ -158,6 +158,11 @@ public: const QStringList &additionalLibraries = QStringList(), const QVariant &cookie = QVariant()); + // Preferred over Processes:Terminate by TCF TRK. + void sendRunControlTerminateCommand(const TcfTrkCallback &callBack, + const QByteArray &id, + const QVariant &cookie = QVariant()); + void sendProcessTerminateCommand(const TcfTrkCallback &callBack, const QByteArray &id, const QVariant &cookie = QVariant()); |