Global component states across instances

This commit is contained in:
Paulchen Panther
2021-05-01 17:36:51 +02:00
parent 17d4406deb
commit cd62a41f22
3 changed files with 16 additions and 5 deletions

View File

@@ -205,8 +205,20 @@ bool API::setComponentState(const QString &comp, bool &compState, QString &reply
if (component != COMP_INVALID)
{
QMetaObject::invokeMethod(_hyperion, "compStateChangeRequest", Qt::QueuedConnection, Q_ARG(hyperion::Components, component), Q_ARG(bool, compState));
return true;
if (component == COMP_FORWARDER ||
component == COMP_GRABBER ||
component == COMP_V4L ||
component == COMP_FLATBUFSERVER ||
component == COMP_PROTOSERVER)
{
QMetaObject::invokeMethod(_instanceManager, "compStateChangeRequest", Qt::QueuedConnection, Q_ARG(hyperion::Components, component), Q_ARG(bool, compState));
return true;
}
else
{
QMetaObject::invokeMethod(_hyperion, "compStateChangeRequest", Qt::QueuedConnection, Q_ARG(hyperion::Components, component), Q_ARG(bool, compState));
return true;
}
}
replyMsg = QString("Unknown component name: %1").arg(comp);
return false;

View File

@@ -88,9 +88,9 @@ bool HyperionIManager::startInstance(quint8 inst, bool block, QObject* caller, i
// from Hyperion
connect(hyperion, &Hyperion::settingsChanged, this, &HyperionIManager::settingsChanged);
connect(hyperion, &Hyperion::videoMode, this, &HyperionIManager::requestVideoMode);
connect(hyperion, &Hyperion::compStateChangeRequest, this, &HyperionIManager::compStateChangeRequest);
// to Hyperion
connect(this, &HyperionIManager::newVideoMode, hyperion, &Hyperion::newVideoMode);
connect(this, &HyperionIManager::compStateChangeRequest, hyperion, &Hyperion::compStateChangeRequest);
// add to queue and start
_startQueue << inst;