mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-07-24 10:53:45 +02:00
modifying screenshare API for viewer
This commit is contained in:
parent
a7427bcb18
commit
894b4127b4
3 changed files with 33 additions and 26 deletions
|
@ -25,27 +25,29 @@ ScreenshareScriptingInterface::~ScreenshareScriptingInterface() {
|
||||||
stopScreenshare();
|
stopScreenshare();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ScreenshareScriptingInterface::startScreenshare(const QString& roomName) {
|
void ScreenshareScriptingInterface::startScreenshare(const bool& isPresenter) {
|
||||||
if (QThread::currentThread() != thread()) {
|
if (QThread::currentThread() != thread()) {
|
||||||
// We must start a new QProcess from the main thread.
|
// We must start a new QProcess from the main thread.
|
||||||
QMetaObject::invokeMethod(
|
QMetaObject::invokeMethod(
|
||||||
this, "startScreenshare",
|
this, "startScreenshare",
|
||||||
Q_ARG(const QString&, roomName)
|
Q_ARG(const bool&, isPresenter)
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_screenshareProcess && _screenshareProcess->state() != QProcess::NotRunning) {
|
if (isPresenter && _screenshareProcess && _screenshareProcess->state() != QProcess::NotRunning) {
|
||||||
qDebug() << "Screenshare process already running. Aborting...";
|
qDebug() << "Screenshare process already running. Aborting...";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_screenshareProcess.reset(new QProcess(this));
|
if (isPresenter) {
|
||||||
|
_screenshareProcess.reset(new QProcess(this));
|
||||||
|
|
||||||
QFileInfo screenshareExecutable(SCREENSHARE_EXE_PATH);
|
QFileInfo screenshareExecutable(SCREENSHARE_EXE_PATH);
|
||||||
if (!screenshareExecutable.exists() || !screenshareExecutable.isFile()) {
|
if (!screenshareExecutable.exists() || !screenshareExecutable.isFile()) {
|
||||||
qDebug() << "Screenshare executable doesn't exist at" << SCREENSHARE_EXE_PATH;
|
qDebug() << "Screenshare executable doesn't exist at" << SCREENSHARE_EXE_PATH;
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QUuid currentDomainID = DependencyManager::get<AddressManager>()->getDomainID();
|
QUuid currentDomainID = DependencyManager::get<AddressManager>()->getDomainID();
|
||||||
|
@ -59,23 +61,27 @@ void ScreenshareScriptingInterface::startScreenshare(const QString& roomName) {
|
||||||
QString apiKey = "";
|
QString apiKey = "";
|
||||||
QString sessionID = "";
|
QString sessionID = "";
|
||||||
|
|
||||||
QStringList arguments;
|
if (isPresenter) {
|
||||||
arguments << "--token=" + token;
|
QStringList arguments;
|
||||||
arguments << "--apiKey=" + apiKey;
|
arguments << "--token=" + token;
|
||||||
arguments << "--sessionID=" + sessionID;
|
arguments << "--apiKey=" + apiKey;
|
||||||
|
arguments << "--sessionID=" + sessionID;
|
||||||
|
|
||||||
|
connect(_screenshareProcess.get(), &QProcess::errorOccurred,
|
||||||
|
[=](QProcess::ProcessError error) { qDebug() << "ZRF QProcess::errorOccurred. `error`:" << error; });
|
||||||
|
connect(_screenshareProcess.get(), &QProcess::started, [=]() { qDebug() << "ZRF QProcess::started"; });
|
||||||
|
connect(_screenshareProcess.get(), &QProcess::stateChanged,
|
||||||
|
[=](QProcess::ProcessState newState) { qDebug() << "ZRF QProcess::stateChanged. `newState`:" << newState; });
|
||||||
|
connect(_screenshareProcess.get(), QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
|
||||||
|
[=](int exitCode, QProcess::ExitStatus exitStatus) {
|
||||||
|
qDebug() << "ZRF QProcess::finished. `exitCode`:" << exitCode << "`exitStatus`:" << exitStatus;
|
||||||
|
emit screenshareStopped();
|
||||||
|
});
|
||||||
|
|
||||||
connect(_screenshareProcess.get(), &QProcess::errorOccurred,
|
_screenshareProcess->start(SCREENSHARE_EXE_PATH, arguments);
|
||||||
[=](QProcess::ProcessError error) { qDebug() << "ZRF QProcess::errorOccurred. `error`:" << error; });
|
} else {
|
||||||
connect(_screenshareProcess.get(), &QProcess::started, [=]() { qDebug() << "ZRF QProcess::started"; });
|
|
||||||
connect(_screenshareProcess.get(), &QProcess::stateChanged,
|
}
|
||||||
[=](QProcess::ProcessState newState) { qDebug() << "ZRF QProcess::stateChanged. `newState`:" << newState; });
|
|
||||||
connect(_screenshareProcess.get(), QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
|
|
||||||
[=](int exitCode, QProcess::ExitStatus exitStatus) {
|
|
||||||
qDebug() << "ZRF QProcess::finished. `exitCode`:" << exitCode << "`exitStatus`:" << exitStatus;
|
|
||||||
emit screenshareStopped();
|
|
||||||
});
|
|
||||||
|
|
||||||
_screenshareProcess->start(SCREENSHARE_EXE_PATH, arguments);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void ScreenshareScriptingInterface::stopScreenshare() {
|
void ScreenshareScriptingInterface::stopScreenshare() {
|
||||||
|
|
|
@ -14,11 +14,12 @@ public:
|
||||||
ScreenshareScriptingInterface();
|
ScreenshareScriptingInterface();
|
||||||
~ScreenshareScriptingInterface();
|
~ScreenshareScriptingInterface();
|
||||||
|
|
||||||
Q_INVOKABLE void startScreenshare(const QString& roomName);
|
Q_INVOKABLE void startScreenshare(const bool& isPresenter);
|
||||||
Q_INVOKABLE void stopScreenshare();
|
Q_INVOKABLE void stopScreenshare();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void screenshareStopped();
|
void screenshareStopped();
|
||||||
|
void startScreenshareViewer();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
#if DEV_BUILD
|
#if DEV_BUILD
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
Are you sure you'd like to share <span id="content_name">Content Name</span>?
|
Are you sure you'd like to share <span id="content_name">Content Name</span>?
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Others will be able to everything contained within this view.
|
Others will be able to see everything contained within this view.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div id="button_selection">
|
<div id="button_selection">
|
||||||
|
|
Loading…
Reference in a new issue