From 64fc3e1091c3ee4a7777c7641341117e54f3d624 Mon Sep 17 00:00:00 2001 From: Simon Walton Date: Tue, 31 Jul 2018 15:30:33 -0700 Subject: [PATCH] ThreadedAssignment calls virtual stop() upon domain disconnect --- assignment-client/src/Agent.cpp | 16 ++++++---------- assignment-client/src/Agent.h | 6 ++++++ assignment-client/src/audio/AudioMixer.cpp | 1 - assignment-client/src/entities/EntityServer.cpp | 1 - .../src/scripts/EntityScriptServer.cpp | 2 -- libraries/networking/src/ThreadedAssignment.cpp | 6 ++++-- libraries/networking/src/ThreadedAssignment.h | 2 +- 7 files changed, 17 insertions(+), 17 deletions(-) diff --git a/assignment-client/src/Agent.cpp b/assignment-client/src/Agent.cpp index 0be691662d..cd4f59332a 100644 --- a/assignment-client/src/Agent.cpp +++ b/assignment-client/src/Agent.cpp @@ -336,7 +336,6 @@ void Agent::scriptRequestFinished() { } setFinished(true); - ThreadedAssignment::aboutToFinish(); } request->deleteLater(); @@ -499,7 +498,6 @@ void Agent::executeScript() { DependencyManager::destroy(); setFinished(true); - ThreadedAssignment::aboutToFinish(); } QUuid Agent::getSessionUUID() const { @@ -827,14 +825,6 @@ void Agent::processAgentAvatarAudio() { void Agent::aboutToFinish() { setIsAvatar(false);// will stop timers for sending identity packets - // If script engine not started yet then finish up, else will be done when - // script engine exits. - if (_scriptEngine) { - _scriptEngine->stop(); - } else { - ThreadedAssignment::aboutToFinish(); - } - // our entity tree is going to go away so tell that to the EntityScriptingInterface DependencyManager::get()->setEntityTree(nullptr); @@ -864,3 +854,9 @@ void Agent::aboutToFinish() { _encoder = nullptr; } } + +void Agent::stop() { + if (_scriptEngine) { + _scriptEngine->stop(); + } +} diff --git a/assignment-client/src/Agent.h b/assignment-client/src/Agent.h index 0fc3fbe1f9..a5883805bb 100644 --- a/assignment-client/src/Agent.h +++ b/assignment-client/src/Agent.h @@ -97,6 +97,12 @@ public slots: */ bool isAvatar() const { return _isAvatar; } + /**jsdoc + * @function Agent.stop + * @deprecated This function is being removed from the API. + */ + Q_INVOKABLE virtual void stop() override; + private slots: void requestScript(); void scriptRequestFinished(); diff --git a/assignment-client/src/audio/AudioMixer.cpp b/assignment-client/src/audio/AudioMixer.cpp index ec9f26b53c..d56b22466e 100644 --- a/assignment-client/src/audio/AudioMixer.cpp +++ b/assignment-client/src/audio/AudioMixer.cpp @@ -109,7 +109,6 @@ AudioMixer::AudioMixer(ReceivedMessage& message) : void AudioMixer::aboutToFinish() { DependencyManager::destroy(); - ThreadedAssignment::aboutToFinish(); } void AudioMixer::queueAudioPacket(QSharedPointer message, SharedNodePointer node) { diff --git a/assignment-client/src/entities/EntityServer.cpp b/assignment-client/src/entities/EntityServer.cpp index 6303cafde8..8b86ba5eb2 100644 --- a/assignment-client/src/entities/EntityServer.cpp +++ b/assignment-client/src/entities/EntityServer.cpp @@ -72,7 +72,6 @@ void EntityServer::aboutToFinish() { DependencyManager::get()->cleanup(); OctreeServer::aboutToFinish(); - ThreadedAssignment::aboutToFinish(); } void EntityServer::handleEntityPacket(QSharedPointer message, SharedNodePointer senderNode) { diff --git a/assignment-client/src/scripts/EntityScriptServer.cpp b/assignment-client/src/scripts/EntityScriptServer.cpp index b40ffbcfb3..ebe25b11bf 100644 --- a/assignment-client/src/scripts/EntityScriptServer.cpp +++ b/assignment-client/src/scripts/EntityScriptServer.cpp @@ -587,6 +587,4 @@ void EntityScriptServer::aboutToFinish() { _codec->releaseEncoder(_encoder); _encoder = nullptr; } - - ThreadedAssignment::aboutToFinish(); } diff --git a/libraries/networking/src/ThreadedAssignment.cpp b/libraries/networking/src/ThreadedAssignment.cpp index d6c09d2a6c..13d4e0bf8b 100644 --- a/libraries/networking/src/ThreadedAssignment.cpp +++ b/libraries/networking/src/ThreadedAssignment.cpp @@ -66,6 +66,8 @@ void ThreadedAssignment::setFinished(bool isFinished) { // call our virtual aboutToFinish method - this gives the ThreadedAssignment subclass a chance to cleanup aboutToFinish(); + + emit finished(); } } } @@ -118,7 +120,7 @@ void ThreadedAssignment::checkInWithDomainServerOrExit() { if (_numQueuedCheckIns >= MAX_SILENT_DOMAIN_SERVER_CHECK_INS) { qCDebug(networking) << "At least" << MAX_SILENT_DOMAIN_SERVER_CHECK_INS << "have been queued without a response from domain-server" << "Stopping the current assignment"; - setFinished(true); + stop(); } else { auto nodeList = DependencyManager::get(); QMetaObject::invokeMethod(nodeList.data(), "sendDomainServerCheckIn"); @@ -130,5 +132,5 @@ void ThreadedAssignment::checkInWithDomainServerOrExit() { void ThreadedAssignment::domainSettingsRequestFailed() { qCDebug(networking) << "Failed to retreive settings object from domain-server. Bailing on assignment."; - setFinished(true); + stop(); } diff --git a/libraries/networking/src/ThreadedAssignment.h b/libraries/networking/src/ThreadedAssignment.h index f245ec917f..9372cfa667 100644 --- a/libraries/networking/src/ThreadedAssignment.h +++ b/libraries/networking/src/ThreadedAssignment.h @@ -25,7 +25,7 @@ public: ~ThreadedAssignment() { stop(); } void setFinished(bool isFinished); - virtual void aboutToFinish() { emit finished(); }; + virtual void aboutToFinish() { }; void addPacketStatsAndSendStatsPacket(QJsonObject statsObject); public slots: