diff --git a/tests/manual/trk/launcher.cpp b/tests/manual/trk/launcher.cpp index 9d71a5f0ad1d2dd1364ac0f43db17a494c8fb4c0..309f3f95b91edc5eb77832b07e123fb1749fd4ed 100644 --- a/tests/manual/trk/launcher.cpp +++ b/tests/manual/trk/launcher.cpp @@ -122,7 +122,6 @@ private: void trkWrite(const TrkMessage &msg); // convienience messages void sendTrkInitialPing(); - void waitForTrkFinished(); void sendTrkAck(byte token); // kill process and breakpoints @@ -138,6 +137,7 @@ private: void handleWaitForFinished(const TrkResult &result); void handleStop(const TrkResult &result); void handleSupportMask(const TrkResult &result); + void waitForTrkFinished(const TrkResult &data); void handleAndReportCreateProcess(const TrkResult &result); void handleResult(const TrkResult &data); @@ -307,14 +307,9 @@ void Adapter::sendTrkInitialPing() queueTrkMessage(msg); } -void Adapter::waitForTrkFinished() +void Adapter::waitForTrkFinished(const TrkResult &result) { - TrkMessage msg; - // initiate one last roundtrip to ensure all is flushed - msg.code = 0x00; // Ping - msg.token = nextTrkWriteToken(); - msg.callBack = CB(handleWaitForFinished); - queueTrkMessage(msg); + sendTrkMessage(TrkPing, CB(handleWaitForFinished)); } void Adapter::sendTrkAck(byte token) @@ -508,6 +503,11 @@ void Adapter::handleResult(const TrkResult &result) case TrkNotifyDeleted: { // NotifyDeleted logMessage(prefix + "NOTE: LIBRARY UNLOAD: " + str); sendTrkAck(result.token); + const char *data = result.data.data(); + ushort itemType = extractShort(data); + if (itemType == 0) { // process + sendTrkMessage(TrkDisconnect, CB(waitForTrkFinished)); + } break; } case TrkNotifyProcessorStarted: { // NotifyProcessorStarted @@ -602,7 +602,7 @@ void Adapter::handleCreateProcess(const TrkResult &result) void Adapter::handleWaitForFinished(const TrkResult &result) { logMessage(" FINISHED: " + stringFromArray(result.data)); - //qApp->exit(1); + qApp->exit(0); } void Adapter::handleSupportMask(const TrkResult &result) diff --git a/tests/manual/trk/trkutils.h b/tests/manual/trk/trkutils.h index 4e62bb5a24c58ff8e2b12740d1630c3b1a878c5c..b8066466606b2a7407517c7071b683bc96f2198b 100644 --- a/tests/manual/trk/trkutils.h +++ b/tests/manual/trk/trkutils.h @@ -42,6 +42,7 @@ namespace trk { enum Command { TrkPing = 0x00, TrkConnect = 0x01, + TrkDisconnect = 0x02, TrkVersions = 0x04, TrkSupported = 0x05, TrkCpuType = 0x06,