mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2025-03-01 10:33:28 +00:00
mDNS Support (#1452)
* Allow build, if no grabbers are enabled * Align available functions to right Qt version * Update to next development version * Align available functions to right Qt version * fix workflows (apt/nightly) * Disable QNetworkConfigurationManager deprecation warnings * Initial go on Smart Pointers * Add Deallocation * Correct QT_WARNING_DISABLE_DEPRECATED (available since 5.9) * Cluster Build Variables * Hyperion Light * Address build warnings * Hyperion Light - UI * Update Protobuf to latest master * Removed compiler warnings * Added restart ability to systray * Correct Protobuf * Ignore 'no-return' warning on protobuf build * hyperion-remote: Fix auto discovery of hyperion server * Fix Qt version override * Update changelog * Remove Grabber Components, if no Grabber exists * Standalone Grabber - Fix fps default * Remote Control - Have Source Selction accrosswhole screen * Enable Blackborder detection only, if relevant input sources available * Enable Blackborder detection only, if relevant input sources available * Remote UI - rearrange containers * Checkout * Fix compilation on windows * Re-added qmdnsengine template cmake * chrono added for linux * Removed existing AVAHI/Bonjour, allow to enable/disable mDNS * hyperiond macos typo fix * Fix macOS Bundle build * Fix macOS bundle info details * Correct CMake files * Removed existing AVAHI/Bonjour (2) * Share hyperion's services via mDNS * Add mDNS Browser and mDNS for LED-Devices * Support mDNS discovery for standalone grabbers * Remove ZLib Dependency & Cleanup * mDNS - hanle 2.local2 an ".local." domains equally * Hue - Link discovery to bridge class, workaround port 443 for mDNS discovery * Fix save button state when switching between devices * Removed sessions (of other hyperions) * mDNS Publisher - Simplify service naming * mDNS refactoring & Forwarder discovery * mDNS Updates to use device service name * Consistency of standalone grabbers with mDNS Service Registry * Merge branch 'hyperion-project:master' into mDNS * Start JSON and WebServers only after Instance 0 is available * Remove bespoke qDebug Output again * MDNS updates and refactor Forwarder * Minor updates * Upgrade to CMake 3.1 * typo * macOS fix * Correct merge * - Remove dynamic linker flag from standalone dispmanX Grabber - Added ability to use system qmdns libs * Cec handler library will load at runtime * typo fix * protobuf changes * mDNS changes for Windows/macOS * test window build qmdnsengine * absolute path to protobuf cmake dir * Rework Hue Wizard supporting mDNS * LED-Devices - Retry support + Refactoring (excl. Hue) * LED-Devices - Refactoring/Retry support Hue + additional alignments * Address LGTM findings * Fix CI-Build, revert test changes * Build Windows in Release mode to avoid python problem * Correct that WebServerObject is available earlier * Ensure that instance name in logs for one instance are presented * Update content LEDs * Rework mDNS Address lookup * Fix LED UI * Fix for non mDNS Services (ignore default port) * Disbale device when now input is available * Revert back some updates, ensure last color is updated when switched on * Handle reopening case and changed IP, port for API-calls * Add UPD-DDP Device * WLED support for DDP * Fix printout * LEDDevice - Allow more retries, udapte defaults * LED-Net Devices - Select Custom device, if configured Co-authored-by: Paulchen Panther <16664240+Paulchen-Panther@users.noreply.github.com> Co-authored-by: Paulchen Panther <Paulchen-Panter@protonmail.com>
This commit is contained in:
@@ -20,10 +20,12 @@
|
||||
|
||||
#include <HyperionConfig.h> // Required to determine the cmake options
|
||||
|
||||
// bonjour browser
|
||||
#ifdef ENABLE_AVAHI
|
||||
#include <bonjour/bonjourbrowserwrapper.h>
|
||||
// mDNS
|
||||
#ifdef ENABLE_MDNS
|
||||
#include <mdns/MdnsProvider.h>
|
||||
#include <mdns/MdnsBrowser.h>
|
||||
#endif
|
||||
|
||||
#include <jsonserver/JsonServer.h>
|
||||
#include <webserver/WebServer.h>
|
||||
#include "hyperiond.h"
|
||||
@@ -65,36 +67,36 @@
|
||||
#include <cec/CECHandler.h>
|
||||
#endif
|
||||
|
||||
HyperionDaemon *HyperionDaemon::daemon = nullptr;
|
||||
HyperionDaemon* HyperionDaemon::daemon = nullptr;
|
||||
|
||||
HyperionDaemon::HyperionDaemon(const QString& rootPath, QObject* parent, bool logLvlOverwrite, bool readonlyMode)
|
||||
: QObject(parent), _log(Logger::getInstance("DAEMON"))
|
||||
, _instanceManager(new HyperionIManager(rootPath, this, readonlyMode))
|
||||
, _authManager(new AuthManager(this, readonlyMode))
|
||||
#ifdef ENABLE_AVAHI
|
||||
, _bonjourBrowserWrapper(new BonjourBrowserWrapper())
|
||||
, _instanceManager(new HyperionIManager(rootPath, this, readonlyMode))
|
||||
, _authManager(new AuthManager(this, readonlyMode))
|
||||
#ifdef ENABLE_MDNS
|
||||
, _mDNSProvider(nullptr)
|
||||
#endif
|
||||
, _netOrigin(new NetOrigin(this))
|
||||
, _netOrigin(new NetOrigin(this))
|
||||
#if defined(ENABLE_EFFECTENGINE)
|
||||
, _pyInit(new PythonInit())
|
||||
, _pyInit(new PythonInit())
|
||||
#endif
|
||||
, _webserver(nullptr)
|
||||
, _sslWebserver(nullptr)
|
||||
, _jsonServer(nullptr)
|
||||
, _videoGrabber(nullptr)
|
||||
, _dispmanx(nullptr)
|
||||
, _x11Grabber(nullptr)
|
||||
, _xcbGrabber(nullptr)
|
||||
, _amlGrabber(nullptr)
|
||||
, _fbGrabber(nullptr)
|
||||
, _osxGrabber(nullptr)
|
||||
, _qtGrabber(nullptr)
|
||||
, _dxGrabber(nullptr)
|
||||
, _ssdp(nullptr)
|
||||
, _webserver(nullptr)
|
||||
, _sslWebserver(nullptr)
|
||||
, _jsonServer(nullptr)
|
||||
, _videoGrabber(nullptr)
|
||||
, _dispmanx(nullptr)
|
||||
, _x11Grabber(nullptr)
|
||||
, _xcbGrabber(nullptr)
|
||||
, _amlGrabber(nullptr)
|
||||
, _fbGrabber(nullptr)
|
||||
, _osxGrabber(nullptr)
|
||||
, _qtGrabber(nullptr)
|
||||
, _dxGrabber(nullptr)
|
||||
, _ssdp(nullptr)
|
||||
#ifdef ENABLE_CEC
|
||||
, _cecHandler(nullptr)
|
||||
, _cecHandler(nullptr)
|
||||
#endif
|
||||
, _currVideoMode(VideoMode::VIDEO_2D)
|
||||
, _currVideoMode(VideoMode::VIDEO_2D)
|
||||
{
|
||||
HyperionDaemon::daemon = this;
|
||||
|
||||
@@ -117,6 +119,11 @@ HyperionDaemon::HyperionDaemon(const QString& rootPath, QObject* parent, bool lo
|
||||
|
||||
createCecHandler();
|
||||
|
||||
//Create MdnsBrowser singleton in main tread to ensure thread affinity during destruction
|
||||
#ifdef ENABLE_MDNS
|
||||
MdnsBrowser::getInstance();
|
||||
#endif
|
||||
|
||||
#if defined(ENABLE_EFFECTENGINE)
|
||||
// init EffectFileHandler
|
||||
EffectFileHandler* efh = new EffectFileHandler(rootPath, getSetting(settings::EFFECTS), this);
|
||||
@@ -135,7 +142,10 @@ HyperionDaemon::HyperionDaemon(const QString& rootPath, QObject* parent, bool lo
|
||||
_instanceManager->startAll();
|
||||
|
||||
//Cleaning up Hyperion before quit
|
||||
connect(parent, SIGNAL(aboutToQuit()), this, SLOT(freeObjects()));
|
||||
connect(QCoreApplication::instance(), &QCoreApplication::aboutToQuit, this, &HyperionDaemon::freeObjects);
|
||||
|
||||
//Handle services dependent on the on first instance's availability
|
||||
connect(_instanceManager, &HyperionIManager::instanceStateChanged, this, &HyperionDaemon::handleInstanceStateChange);
|
||||
|
||||
// pipe settings changes from HyperionIManager to Daemon
|
||||
connect(_instanceManager, &HyperionIManager::settingsChanged, this, &HyperionDaemon::settingsChanged);
|
||||
@@ -171,6 +181,62 @@ HyperionDaemon::~HyperionDaemon()
|
||||
#endif
|
||||
}
|
||||
|
||||
void HyperionDaemon::handleInstanceStateChange(InstanceState state, quint8 instance)
|
||||
{
|
||||
switch (state)
|
||||
{
|
||||
case InstanceState::H_STARTED:
|
||||
|
||||
if (instance == 0)
|
||||
{
|
||||
// Start Json server in own thread
|
||||
_jsonServer = new JsonServer(getSetting(settings::JSONSERVER));
|
||||
QThread* jsonThread = new QThread(this);
|
||||
jsonThread->setObjectName("JSONServerThread");
|
||||
_jsonServer->moveToThread(jsonThread);
|
||||
connect(jsonThread, &QThread::started, _jsonServer, &JsonServer::initServer);
|
||||
connect(jsonThread, &QThread::finished, _jsonServer, &JsonServer::deleteLater);
|
||||
connect(this, &HyperionDaemon::settingsChanged, _jsonServer, &JsonServer::handleSettingsUpdate);
|
||||
#ifdef ENABLE_MDNS
|
||||
connect(_jsonServer, &JsonServer::publishService, _mDNSProvider, &MdnsProvider::publishService);
|
||||
#endif
|
||||
jsonThread->start();
|
||||
|
||||
// Start Webserver in own thread
|
||||
QThread* wsThread = new QThread(this);
|
||||
wsThread->setObjectName("WebServerThread");
|
||||
_webserver->moveToThread(wsThread);
|
||||
connect(wsThread, &QThread::started, _webserver, &WebServer::initServer);
|
||||
connect(wsThread, &QThread::finished, _webserver, &WebServer::deleteLater);
|
||||
connect(this, &HyperionDaemon::settingsChanged, _webserver, &WebServer::handleSettingsUpdate);
|
||||
#ifdef ENABLE_MDNS
|
||||
connect(_webserver, &WebServer::publishService, _mDNSProvider, &MdnsProvider::publishService);
|
||||
#endif
|
||||
wsThread->start();
|
||||
|
||||
// Start SSL Webserver in own thread
|
||||
_sslWebserver = new WebServer(getSetting(settings::WEBSERVER), true);
|
||||
QThread* sslWsThread = new QThread(this);
|
||||
sslWsThread->setObjectName("SSLWebServerThread");
|
||||
_sslWebserver->moveToThread(sslWsThread);
|
||||
connect(sslWsThread, &QThread::started, _sslWebserver, &WebServer::initServer);
|
||||
connect(sslWsThread, &QThread::finished, _sslWebserver, &WebServer::deleteLater);
|
||||
connect(this, &HyperionDaemon::settingsChanged, _sslWebserver, &WebServer::handleSettingsUpdate);
|
||||
#ifdef ENABLE_MDNS
|
||||
connect(_sslWebserver, &WebServer::publishService, _mDNSProvider, &MdnsProvider::publishService);
|
||||
#endif
|
||||
sslWsThread->start();
|
||||
}
|
||||
break;
|
||||
|
||||
case InstanceState::H_STOPPED:
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void HyperionDaemon::setVideoMode(VideoMode mode)
|
||||
{
|
||||
if (_currVideoMode != mode)
|
||||
@@ -189,9 +255,25 @@ void HyperionDaemon::freeObjects()
|
||||
{
|
||||
Debug(_log, "Cleaning up Hyperion before quit.");
|
||||
|
||||
// destroy network first as a client might want to access hyperion
|
||||
delete _jsonServer;
|
||||
_jsonServer = nullptr;
|
||||
#ifdef ENABLE_MDNS
|
||||
if (_mDNSProvider != nullptr)
|
||||
{
|
||||
auto mDnsThread = _mDNSProvider->thread();
|
||||
mDnsThread->quit();
|
||||
mDnsThread->wait();
|
||||
delete mDnsThread;
|
||||
_mDNSProvider = nullptr;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (_jsonServer != nullptr)
|
||||
{
|
||||
auto jsonThread = _jsonServer->thread();
|
||||
jsonThread->quit();
|
||||
jsonThread->wait();
|
||||
delete jsonThread;
|
||||
_jsonServer = nullptr;
|
||||
}
|
||||
|
||||
#if defined(ENABLE_FLATBUF_SERVER)
|
||||
if (_flatBufferServer != nullptr)
|
||||
@@ -258,11 +340,6 @@ void HyperionDaemon::freeObjects()
|
||||
// stop Hyperions (non blocking)
|
||||
_instanceManager->stopAll();
|
||||
|
||||
#ifdef ENABLE_AVAHI
|
||||
delete _bonjourBrowserWrapper;
|
||||
_bonjourBrowserWrapper = nullptr;
|
||||
#endif
|
||||
|
||||
delete _amlGrabber;
|
||||
if (_dispmanx != nullptr)
|
||||
delete _dispmanx;
|
||||
@@ -273,19 +350,26 @@ void HyperionDaemon::freeObjects()
|
||||
delete _videoGrabber;
|
||||
|
||||
_videoGrabber = nullptr;
|
||||
_amlGrabber = nullptr;
|
||||
_dispmanx = nullptr;
|
||||
_fbGrabber = nullptr;
|
||||
_osxGrabber = nullptr;
|
||||
_qtGrabber = nullptr;
|
||||
_dxGrabber = nullptr;
|
||||
_amlGrabber = nullptr;
|
||||
_dispmanx = nullptr;
|
||||
_fbGrabber = nullptr;
|
||||
_osxGrabber = nullptr;
|
||||
_qtGrabber = nullptr;
|
||||
_dxGrabber = nullptr;
|
||||
}
|
||||
|
||||
void HyperionDaemon::startNetworkServices()
|
||||
{
|
||||
// Create Json server
|
||||
_jsonServer = new JsonServer(getSetting(settings::JSONSERVER));
|
||||
connect(this, &HyperionDaemon::settingsChanged, _jsonServer, &JsonServer::handleSettingsUpdate);
|
||||
// Create mDNS-Provider in thread to allow publishing other services
|
||||
#ifdef ENABLE_MDNS
|
||||
_mDNSProvider = new MdnsProvider();
|
||||
QThread* mDnsThread = new QThread(this);
|
||||
mDnsThread->setObjectName("mDNSProviderThread");
|
||||
_mDNSProvider->moveToThread(mDnsThread);
|
||||
connect(mDnsThread, &QThread::started, _mDNSProvider, &MdnsProvider::init);
|
||||
connect(mDnsThread, &QThread::finished, _mDNSProvider, &MdnsProvider::deleteLater);
|
||||
mDnsThread->start();
|
||||
#endif
|
||||
|
||||
#if defined(ENABLE_FLATBUF_SERVER)
|
||||
// Create FlatBuffer server in thread
|
||||
@@ -296,6 +380,9 @@ void HyperionDaemon::startNetworkServices()
|
||||
connect(fbThread, &QThread::started, _flatBufferServer, &FlatBufferServer::initServer);
|
||||
connect(fbThread, &QThread::finished, _flatBufferServer, &FlatBufferServer::deleteLater);
|
||||
connect(this, &HyperionDaemon::settingsChanged, _flatBufferServer, &FlatBufferServer::handleSettingsUpdate);
|
||||
#ifdef ENABLE_MDNS
|
||||
connect(_flatBufferServer, &FlatBufferServer::publishService, _mDNSProvider, &MdnsProvider::publishService);
|
||||
#endif
|
||||
fbThread->start();
|
||||
#endif
|
||||
|
||||
@@ -308,36 +395,22 @@ void HyperionDaemon::startNetworkServices()
|
||||
connect(pThread, &QThread::started, _protoServer, &ProtoServer::initServer);
|
||||
connect(pThread, &QThread::finished, _protoServer, &ProtoServer::deleteLater);
|
||||
connect(this, &HyperionDaemon::settingsChanged, _protoServer, &ProtoServer::handleSettingsUpdate);
|
||||
#ifdef ENABLE_MDNS
|
||||
connect(_protoServer, &ProtoServer::publishService, _mDNSProvider, &MdnsProvider::publishService);
|
||||
#endif
|
||||
pThread->start();
|
||||
#endif
|
||||
|
||||
// Create Webserver in thread
|
||||
// Create Webserver
|
||||
_webserver = new WebServer(getSetting(settings::WEBSERVER), false);
|
||||
QThread* wsThread = new QThread(this);
|
||||
wsThread->setObjectName("WebServerThread");
|
||||
_webserver->moveToThread(wsThread);
|
||||
connect(wsThread, &QThread::started, _webserver, &WebServer::initServer);
|
||||
connect(wsThread, &QThread::finished, _webserver, &WebServer::deleteLater);
|
||||
connect(this, &HyperionDaemon::settingsChanged, _webserver, &WebServer::handleSettingsUpdate);
|
||||
wsThread->start();
|
||||
|
||||
// Create SSL Webserver in thread
|
||||
_sslWebserver = new WebServer(getSetting(settings::WEBSERVER), true);
|
||||
QThread* sslWsThread = new QThread(this);
|
||||
sslWsThread->setObjectName("SSLWebServerThread");
|
||||
_sslWebserver->moveToThread(sslWsThread);
|
||||
connect(sslWsThread, &QThread::started, _sslWebserver, &WebServer::initServer);
|
||||
connect(sslWsThread, &QThread::finished, _sslWebserver, &WebServer::deleteLater);
|
||||
connect(this, &HyperionDaemon::settingsChanged, _sslWebserver, &WebServer::handleSettingsUpdate);
|
||||
sslWsThread->start();
|
||||
|
||||
// Create SSDP server in thread
|
||||
// Create SSDP server
|
||||
_ssdp = new SSDPHandler(_webserver,
|
||||
getSetting(settings::FLATBUFSERVER).object()["port"].toInt(),
|
||||
getSetting(settings::PROTOSERVER).object()["port"].toInt(),
|
||||
getSetting(settings::JSONSERVER).object()["port"].toInt(),
|
||||
getSetting(settings::WEBSERVER).object()["sslPort"].toInt(),
|
||||
getSetting(settings::GENERAL).object()["name"].toString());
|
||||
getSetting(settings::FLATBUFSERVER).object()["port"].toInt(),
|
||||
getSetting(settings::PROTOSERVER).object()["port"].toInt(),
|
||||
getSetting(settings::JSONSERVER).object()["port"].toInt(),
|
||||
getSetting(settings::WEBSERVER).object()["sslPort"].toInt(),
|
||||
getSetting(settings::GENERAL).object()["name"].toString());
|
||||
QThread* ssdpThread = new QThread(this);
|
||||
ssdpThread->setObjectName("SSDPThread");
|
||||
_ssdp->moveToThread(ssdpThread);
|
||||
@@ -387,11 +460,11 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
|
||||
_grabber_cropTop = grabberConfig["cropTop"].toInt(0);
|
||||
_grabber_cropBottom = grabberConfig["cropBottom"].toInt(0);
|
||||
|
||||
#ifdef ENABLE_OSX
|
||||
#ifdef ENABLE_OSX
|
||||
QString type = grabberConfig["device"].toString("osx");
|
||||
#else
|
||||
#else
|
||||
QString type = grabberConfig["device"].toString("auto");
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// auto eval of type
|
||||
if (type == "auto")
|
||||
@@ -408,7 +481,7 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
|
||||
{
|
||||
type = "amlogic";
|
||||
|
||||
QString amlDevice ("/dev/amvideocap0");
|
||||
QString amlDevice("/dev/amvideocap0");
|
||||
if (!QFile::exists(amlDevice))
|
||||
{
|
||||
Error(_log, "grabber device '%s' for type amlogic not found!", QSTRING_CSTR(amlDevice));
|
||||
@@ -420,13 +493,13 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
|
||||
QByteArray envDisplay = qgetenv("DISPLAY");
|
||||
if (!envDisplay.isEmpty())
|
||||
{
|
||||
#if defined(ENABLE_X11)
|
||||
#if defined(ENABLE_X11)
|
||||
type = "x11";
|
||||
#elif defined(ENABLE_XCB)
|
||||
#elif defined(ENABLE_XCB)
|
||||
type = "xcb";
|
||||
#else
|
||||
#else
|
||||
type = "qt";
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
// qt -> if nothing other applies
|
||||
else
|
||||
@@ -440,70 +513,70 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
|
||||
if (_prevType != type)
|
||||
{
|
||||
// stop all capture interfaces
|
||||
#ifdef ENABLE_FB
|
||||
#ifdef ENABLE_FB
|
||||
if (_fbGrabber != nullptr)
|
||||
{
|
||||
_fbGrabber->stop();
|
||||
delete _fbGrabber;
|
||||
_fbGrabber = nullptr;
|
||||
}
|
||||
#endif
|
||||
#ifdef ENABLE_DISPMANX
|
||||
#endif
|
||||
#ifdef ENABLE_DISPMANX
|
||||
if (_dispmanx != nullptr)
|
||||
{
|
||||
_dispmanx->stop();
|
||||
delete _dispmanx;
|
||||
_dispmanx = nullptr;
|
||||
}
|
||||
#endif
|
||||
#ifdef ENABLE_AMLOGIC
|
||||
#endif
|
||||
#ifdef ENABLE_AMLOGIC
|
||||
if (_amlGrabber != nullptr)
|
||||
{
|
||||
_amlGrabber->stop();
|
||||
delete _amlGrabber;
|
||||
_amlGrabber = nullptr;
|
||||
}
|
||||
#endif
|
||||
#ifdef ENABLE_OSX
|
||||
#endif
|
||||
#ifdef ENABLE_OSX
|
||||
if (_osxGrabber != nullptr)
|
||||
{
|
||||
_osxGrabber->stop();
|
||||
delete _osxGrabber;
|
||||
_osxGrabber = nullptr;
|
||||
}
|
||||
#endif
|
||||
#ifdef ENABLE_X11
|
||||
#endif
|
||||
#ifdef ENABLE_X11
|
||||
if (_x11Grabber != nullptr)
|
||||
{
|
||||
_x11Grabber->stop();
|
||||
delete _x11Grabber;
|
||||
_x11Grabber = nullptr;
|
||||
}
|
||||
#endif
|
||||
#ifdef ENABLE_XCB
|
||||
#endif
|
||||
#ifdef ENABLE_XCB
|
||||
if (_xcbGrabber != nullptr)
|
||||
{
|
||||
_xcbGrabber->stop();
|
||||
delete _xcbGrabber;
|
||||
_xcbGrabber = nullptr;
|
||||
}
|
||||
#endif
|
||||
#ifdef ENABLE_QT
|
||||
#endif
|
||||
#ifdef ENABLE_QT
|
||||
if (_qtGrabber != nullptr)
|
||||
{
|
||||
_qtGrabber->stop();
|
||||
delete _qtGrabber;
|
||||
_qtGrabber = nullptr;
|
||||
}
|
||||
#endif
|
||||
#ifdef ENABLE_DX
|
||||
#endif
|
||||
#ifdef ENABLE_DX
|
||||
if (_dxGrabber != nullptr)
|
||||
{
|
||||
_dxGrabber->stop();
|
||||
delete _dxGrabber;
|
||||
_dxGrabber = nullptr;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// create/start capture interface
|
||||
if (type == "framebuffer")
|
||||
@@ -512,10 +585,10 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
|
||||
{
|
||||
createGrabberFramebuffer(grabberConfig);
|
||||
}
|
||||
#ifdef ENABLE_FB
|
||||
_fbGrabber->handleSettingsUpdate(settings::SYSTEMCAPTURE, getSetting(settings::SYSTEMCAPTURE));
|
||||
_fbGrabber->tryStart();
|
||||
#endif
|
||||
#ifdef ENABLE_FB
|
||||
_fbGrabber->handleSettingsUpdate(settings::SYSTEMCAPTURE, getSetting(settings::SYSTEMCAPTURE));
|
||||
_fbGrabber->tryStart();
|
||||
#endif
|
||||
}
|
||||
else if (type == "dispmanx")
|
||||
{
|
||||
@@ -524,13 +597,13 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
|
||||
createGrabberDispmanx(grabberConfig);
|
||||
}
|
||||
|
||||
#ifdef ENABLE_DISPMANX
|
||||
#ifdef ENABLE_DISPMANX
|
||||
if (_dispmanx != nullptr)
|
||||
{
|
||||
_dispmanx->handleSettingsUpdate(settings::SYSTEMCAPTURE, getSetting(settings::SYSTEMCAPTURE));
|
||||
_dispmanx->tryStart();
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
else if (type == "amlogic")
|
||||
{
|
||||
@@ -538,10 +611,10 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
|
||||
{
|
||||
createGrabberAmlogic(grabberConfig);
|
||||
}
|
||||
#ifdef ENABLE_AMLOGIC
|
||||
_amlGrabber->handleSettingsUpdate(settings::SYSTEMCAPTURE, getSetting(settings::SYSTEMCAPTURE));
|
||||
_amlGrabber->tryStart();
|
||||
#endif
|
||||
#ifdef ENABLE_AMLOGIC
|
||||
_amlGrabber->handleSettingsUpdate(settings::SYSTEMCAPTURE, getSetting(settings::SYSTEMCAPTURE));
|
||||
_amlGrabber->tryStart();
|
||||
#endif
|
||||
}
|
||||
else if (type == "osx")
|
||||
{
|
||||
@@ -549,10 +622,10 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
|
||||
{
|
||||
createGrabberOsx(grabberConfig);
|
||||
}
|
||||
#ifdef ENABLE_OSX
|
||||
_osxGrabber->handleSettingsUpdate(settings::SYSTEMCAPTURE, getSetting(settings::SYSTEMCAPTURE));
|
||||
_osxGrabber->tryStart();
|
||||
#endif
|
||||
#ifdef ENABLE_OSX
|
||||
_osxGrabber->handleSettingsUpdate(settings::SYSTEMCAPTURE, getSetting(settings::SYSTEMCAPTURE));
|
||||
_osxGrabber->tryStart();
|
||||
#endif
|
||||
}
|
||||
else if (type == "x11")
|
||||
{
|
||||
@@ -560,10 +633,10 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
|
||||
{
|
||||
createGrabberX11(grabberConfig);
|
||||
}
|
||||
#ifdef ENABLE_X11
|
||||
_x11Grabber->handleSettingsUpdate(settings::SYSTEMCAPTURE, getSetting(settings::SYSTEMCAPTURE));
|
||||
_x11Grabber->tryStart();
|
||||
#endif
|
||||
#ifdef ENABLE_X11
|
||||
_x11Grabber->handleSettingsUpdate(settings::SYSTEMCAPTURE, getSetting(settings::SYSTEMCAPTURE));
|
||||
_x11Grabber->tryStart();
|
||||
#endif
|
||||
}
|
||||
else if (type == "xcb")
|
||||
{
|
||||
@@ -571,10 +644,10 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
|
||||
{
|
||||
createGrabberXcb(grabberConfig);
|
||||
}
|
||||
#ifdef ENABLE_XCB
|
||||
_xcbGrabber->handleSettingsUpdate(settings::SYSTEMCAPTURE, getSetting(settings::SYSTEMCAPTURE));
|
||||
_xcbGrabber->tryStart();
|
||||
#endif
|
||||
#ifdef ENABLE_XCB
|
||||
_xcbGrabber->handleSettingsUpdate(settings::SYSTEMCAPTURE, getSetting(settings::SYSTEMCAPTURE));
|
||||
_xcbGrabber->tryStart();
|
||||
#endif
|
||||
}
|
||||
else if (type == "qt")
|
||||
{
|
||||
@@ -582,10 +655,10 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
|
||||
{
|
||||
createGrabberQt(grabberConfig);
|
||||
}
|
||||
#ifdef ENABLE_QT
|
||||
_qtGrabber->handleSettingsUpdate(settings::SYSTEMCAPTURE, getSetting(settings::SYSTEMCAPTURE));
|
||||
_qtGrabber->tryStart();
|
||||
#endif
|
||||
#ifdef ENABLE_QT
|
||||
_qtGrabber->handleSettingsUpdate(settings::SYSTEMCAPTURE, getSetting(settings::SYSTEMCAPTURE));
|
||||
_qtGrabber->tryStart();
|
||||
#endif
|
||||
}
|
||||
else if (type == "dx")
|
||||
{
|
||||
@@ -593,10 +666,10 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
|
||||
{
|
||||
createGrabberDx(grabberConfig);
|
||||
}
|
||||
#ifdef ENABLE_DX
|
||||
_dxGrabber->handleSettingsUpdate(settings::SYSTEMCAPTURE, getSetting(settings::SYSTEMCAPTURE));
|
||||
_dxGrabber->tryStart();
|
||||
#endif
|
||||
#ifdef ENABLE_DX
|
||||
_dxGrabber->handleSettingsUpdate(settings::SYSTEMCAPTURE, getSetting(settings::SYSTEMCAPTURE));
|
||||
_dxGrabber->tryStart();
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -677,7 +750,7 @@ void HyperionDaemon::createGrabberAmlogic(const QJsonObject& /*grabberConfig*/)
|
||||
_amlGrabber = new AmlogicWrapper(
|
||||
_grabber_frequency,
|
||||
_grabber_pixelDecimation
|
||||
);
|
||||
);
|
||||
_amlGrabber->setCropping(_grabber_cropLeft, _grabber_cropRight, _grabber_cropTop, _grabber_cropBottom);
|
||||
|
||||
// connect to HyperionDaemon signal
|
||||
@@ -697,7 +770,7 @@ void HyperionDaemon::createGrabberX11(const QJsonObject& /*grabberConfig*/)
|
||||
_grabber_frequency,
|
||||
_grabber_pixelDecimation,
|
||||
_grabber_cropLeft, _grabber_cropRight, _grabber_cropTop, _grabber_cropBottom
|
||||
);
|
||||
);
|
||||
_x11Grabber->setCropping(_grabber_cropLeft, _grabber_cropRight, _grabber_cropTop, _grabber_cropBottom);
|
||||
|
||||
// connect to HyperionDaemon signal
|
||||
@@ -717,7 +790,7 @@ void HyperionDaemon::createGrabberXcb(const QJsonObject& /*grabberConfig*/)
|
||||
_grabber_frequency,
|
||||
_grabber_pixelDecimation,
|
||||
_grabber_cropLeft, _grabber_cropRight, _grabber_cropTop, _grabber_cropBottom
|
||||
);
|
||||
);
|
||||
_xcbGrabber->setCropping(_grabber_cropLeft, _grabber_cropRight, _grabber_cropTop, _grabber_cropBottom);
|
||||
|
||||
// connect to HyperionDaemon signal
|
||||
@@ -738,7 +811,7 @@ void HyperionDaemon::createGrabberQt(const QJsonObject& grabberConfig)
|
||||
grabberConfig["input"].toInt(0),
|
||||
_grabber_pixelDecimation,
|
||||
_grabber_cropLeft, _grabber_cropRight, _grabber_cropTop, _grabber_cropBottom
|
||||
);
|
||||
);
|
||||
|
||||
// connect to HyperionDaemon signal
|
||||
connect(this, &HyperionDaemon::videoMode, _qtGrabber, &QtWrapper::setVideoMode);
|
||||
@@ -758,7 +831,7 @@ void HyperionDaemon::createGrabberDx(const QJsonObject& grabberConfig)
|
||||
grabberConfig["display"].toInt(0),
|
||||
_grabber_pixelDecimation,
|
||||
_grabber_cropLeft, _grabber_cropRight, _grabber_cropTop, _grabber_cropBottom
|
||||
);
|
||||
);
|
||||
|
||||
// connect to HyperionDaemon signal
|
||||
connect(this, &HyperionDaemon::videoMode, _dxGrabber, &DirectXWrapper::setVideoMode);
|
||||
@@ -781,7 +854,7 @@ void HyperionDaemon::createGrabberFramebuffer(const QJsonObject& grabberConfig)
|
||||
_grabber_frequency,
|
||||
devicePath,
|
||||
_grabber_pixelDecimation
|
||||
);
|
||||
);
|
||||
_fbGrabber->setCropping(_grabber_cropLeft, _grabber_cropRight, _grabber_cropTop, _grabber_cropBottom);
|
||||
// connect to HyperionDaemon signal
|
||||
connect(this, &HyperionDaemon::videoMode, _fbGrabber, &FramebufferWrapper::setVideoMode);
|
||||
@@ -793,7 +866,7 @@ void HyperionDaemon::createGrabberFramebuffer(const QJsonObject& grabberConfig)
|
||||
#endif
|
||||
}
|
||||
|
||||
void HyperionDaemon::createGrabberOsx(const QJsonObject& grabberConfig)
|
||||
void HyperionDaemon::createGrabberOsx(const QJsonObject& grabberConfig)
|
||||
{
|
||||
#ifdef ENABLE_OSX
|
||||
// Construct and start the osx grabber if the configuration is present
|
||||
@@ -801,7 +874,7 @@ void HyperionDaemon::createGrabberFramebuffer(const QJsonObject& grabberConfig)
|
||||
_grabber_frequency,
|
||||
grabberConfig["input"].toInt(0),
|
||||
_grabber_pixelDecimation
|
||||
);
|
||||
);
|
||||
_osxGrabber->setCropping(_grabber_cropLeft, _grabber_cropRight, _grabber_cropTop, _grabber_cropBottom);
|
||||
|
||||
// connect to HyperionDaemon signal
|
||||
@@ -829,10 +902,11 @@ void HyperionDaemon::createCecHandler()
|
||||
{
|
||||
_videoGrabber->handleCecEvent(event);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Info(_log, "CEC handler created");
|
||||
#else
|
||||
Debug(_log, "The CEC handler is not supported on this platform");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user