From 8255210c6ad4acec82b364cf4aa0c43c12164f9b Mon Sep 17 00:00:00 2001 From: Zach Fox Date: Wed, 13 Nov 2019 15:43:41 -0800 Subject: [PATCH] Add new screenshare error signals --- .../ScreenshareScriptingInterface.cpp | 21 +++++++++++++++++-- .../scripting/ScreenshareScriptingInterface.h | 3 ++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/interface/src/scripting/ScreenshareScriptingInterface.cpp b/interface/src/scripting/ScreenshareScriptingInterface.cpp index aa4bd07241..5bd62383df 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.cpp +++ b/interface/src/scripting/ScreenshareScriptingInterface.cpp @@ -79,6 +79,8 @@ void ScreenshareScriptingInterface::startScreenshare(const QUuid& screenshareZon QFileInfo screenshareExecutable(SCREENSHARE_EXE_PATH); if (!screenshareExecutable.exists() || !screenshareExecutable.isFile()) { qDebug() << "Screenshare executable doesn't exist at" << SCREENSHARE_EXE_PATH; + stopScreenshare(); + emit screenshareError(); return; } } @@ -115,6 +117,7 @@ void ScreenshareScriptingInterface::stopScreenshare() { if (_screenshareProcess && _screenshareProcess->state() != QProcess::NotRunning) { _screenshareProcess->terminate(); + emit screenshareProcessTerminated(); } if (!_screenshareViewerLocalWebEntityUUID.isNull()) { @@ -138,8 +141,10 @@ void ScreenshareScriptingInterface::handleSuccessfulScreenshareInfoGet(QNetworkR QJsonDocument answerJSONObject = QJsonDocument::fromJson(answerByteArray); QString status = answerJSONObject["status"].toString(); - if (status == "fail") { + if (status != "success") { qDebug() << "\n\n MN HERE: SCREENSHARE REPLY FAIL"; + stopScreenshare(); + emit screenshareError(); return; } @@ -148,6 +153,13 @@ void ScreenshareScriptingInterface::handleSuccessfulScreenshareInfoGet(QNetworkR _sessionID = answerJSONObject["sessionID"].toString(); qDebug() << "token:" << _token << " projectAPIKey:" << _projectAPIKey << " sessionID: " << _sessionID; + if (_token.isEmpty() || _projectAPIKey.isEmpty() || _sessionID.isEmpty()) { + qDebug() << "Not all Screen Share information was retrieved from the backend. Stopping..."; + stopScreenshare(); + emit screenshareError(); + return; + } + if (_isPresenter) { QStringList arguments; arguments << " "; @@ -164,7 +176,6 @@ void ScreenshareScriptingInterface::handleSuccessfulScreenshareInfoGet(QNetworkR connect(_screenshareProcess.get(), QOverload::of(&QProcess::finished), [=](int exitCode, QProcess::ExitStatus exitStatus) { qDebug() << "ZRF QProcess::finished. `exitCode`:" << exitCode << "`exitStatus`:" << exitStatus; - emit screenshareStopped(); stopScreenshare(); }); @@ -172,11 +183,15 @@ void ScreenshareScriptingInterface::handleSuccessfulScreenshareInfoGet(QNetworkR } if (!_screenshareViewerLocalWebEntityUUID.isNull()) { + stopScreenshare(); + emit screenshareError(); return; } auto esi = DependencyManager::get(); if (!esi) { + stopScreenshare(); + emit screenshareError(); return; } @@ -200,6 +215,8 @@ void ScreenshareScriptingInterface::handleSuccessfulScreenshareInfoGet(QNetworkR void ScreenshareScriptingInterface::handleFailedScreenshareInfoGet(QNetworkReply* reply) { qDebug() << "\n\n MN HERE: handleFailedScreenshareInfoGet():" << reply->readAll(); + stopScreenshare(); + emit screenshareError(); } void ScreenshareScriptingInterface::onWebEventReceived(const QUuid& entityID, const QVariant& message) { diff --git a/interface/src/scripting/ScreenshareScriptingInterface.h b/interface/src/scripting/ScreenshareScriptingInterface.h index b0b5ba31b1..b3d39f8f25 100644 --- a/interface/src/scripting/ScreenshareScriptingInterface.h +++ b/interface/src/scripting/ScreenshareScriptingInterface.h @@ -31,7 +31,8 @@ public: Q_INVOKABLE void stopScreenshare(); signals: - void screenshareStopped(); + void screenshareError(); + void screenshareProcessTerminated(); void startScreenshareViewer(); private slots: