mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2025-03-01 10:33:28 +00:00
fix: Resolve enable state for v4l and screen capture (#728)
* fix: Resolve the enable state for v4l and screen capture * Use instance index instead of pointer * Second try * fix(QtGrabber): QScreen ownership * Remove v4l2 compState listener
This commit is contained in:
@@ -327,22 +327,52 @@ void HyperionDaemon::handleSettingsUpdate(const settings::type& settingsType, co
|
||||
|
||||
// stop all capture interfaces
|
||||
#ifdef ENABLE_FB
|
||||
if(_fbGrabber != nullptr) _fbGrabber->stop();
|
||||
if(_fbGrabber != nullptr)
|
||||
{
|
||||
_fbGrabber->stop();
|
||||
delete _fbGrabber;
|
||||
_fbGrabber = nullptr;
|
||||
}
|
||||
#endif
|
||||
#ifdef ENABLE_DISPMANX
|
||||
if(_dispmanx != nullptr) _dispmanx->stop();
|
||||
if(_dispmanx != nullptr)
|
||||
{
|
||||
_dispmanx->stop();
|
||||
delete _dispmanx;
|
||||
_dispmanx = nullptr;
|
||||
}
|
||||
#endif
|
||||
#ifdef ENABLE_AMLOGIC
|
||||
if(_amlGrabber != nullptr) _amlGrabber->stop();
|
||||
if(_amlGrabber != nullptr)
|
||||
{
|
||||
_amlGrabber->stop();
|
||||
delete _amlGrabber;
|
||||
_amlGrabber = nullptr;
|
||||
}
|
||||
#endif
|
||||
#ifdef ENABLE_OSX
|
||||
if(_osxGrabber != nullptr) _osxGrabber->stop();
|
||||
if(_osxGrabber != nullptr)
|
||||
{
|
||||
_osxGrabber->stop();
|
||||
delete _osxGrabber;
|
||||
_osxGrabber = nullptr;
|
||||
}
|
||||
#endif
|
||||
#ifdef ENABLE_X11
|
||||
if(_x11Grabber != nullptr) _x11Grabber->stop();
|
||||
if(_x11Grabber != nullptr)
|
||||
{
|
||||
_x11Grabber->stop();
|
||||
delete _x11Grabber;
|
||||
_x11Grabber = nullptr;
|
||||
}
|
||||
#endif
|
||||
#ifdef ENABLE_QT
|
||||
if(_qtGrabber != nullptr) _qtGrabber->stop();
|
||||
if(_qtGrabber != nullptr)
|
||||
{
|
||||
_qtGrabber->stop();
|
||||
delete _qtGrabber;
|
||||
_qtGrabber = nullptr;
|
||||
}
|
||||
#endif
|
||||
|
||||
// create/start capture interface
|
||||
@@ -351,7 +381,7 @@ void HyperionDaemon::handleSettingsUpdate(const settings::type& settingsType, co
|
||||
if(_fbGrabber == nullptr)
|
||||
createGrabberFramebuffer(grabberConfig);
|
||||
#ifdef ENABLE_FB
|
||||
_fbGrabber->start();
|
||||
_fbGrabber->tryStart();
|
||||
#endif
|
||||
}
|
||||
else if(type == "dispmanx")
|
||||
@@ -359,7 +389,7 @@ void HyperionDaemon::handleSettingsUpdate(const settings::type& settingsType, co
|
||||
if(_dispmanx == nullptr)
|
||||
createGrabberDispmanx();
|
||||
#ifdef ENABLE_DISPMANX
|
||||
_dispmanx->start();
|
||||
_dispmanx->tryStart();
|
||||
#endif
|
||||
}
|
||||
else if(type == "amlogic")
|
||||
@@ -367,7 +397,7 @@ void HyperionDaemon::handleSettingsUpdate(const settings::type& settingsType, co
|
||||
if(_amlGrabber == nullptr)
|
||||
createGrabberAmlogic();
|
||||
#ifdef ENABLE_AMLOGIC
|
||||
_amlGrabber->start();
|
||||
_amlGrabber->tryStart();
|
||||
#endif
|
||||
}
|
||||
else if(type == "osx")
|
||||
@@ -375,7 +405,7 @@ void HyperionDaemon::handleSettingsUpdate(const settings::type& settingsType, co
|
||||
if(_osxGrabber == nullptr)
|
||||
createGrabberOsx(grabberConfig);
|
||||
#ifdef ENABLE_OSX
|
||||
_osxGrabber->start();
|
||||
_osxGrabber->tryStart();
|
||||
#endif
|
||||
}
|
||||
else if(type == "x11")
|
||||
@@ -383,7 +413,7 @@ void HyperionDaemon::handleSettingsUpdate(const settings::type& settingsType, co
|
||||
if(_x11Grabber == nullptr)
|
||||
createGrabberX11(grabberConfig);
|
||||
#ifdef ENABLE_X11
|
||||
_x11Grabber->start();
|
||||
_x11Grabber->tryStart();
|
||||
#endif
|
||||
}
|
||||
else if(type == "qt")
|
||||
@@ -391,7 +421,7 @@ void HyperionDaemon::handleSettingsUpdate(const settings::type& settingsType, co
|
||||
if(_qtGrabber == nullptr)
|
||||
createGrabberQt(grabberConfig);
|
||||
#ifdef ENABLE_QT
|
||||
_qtGrabber->start();
|
||||
_qtGrabber->tryStart();
|
||||
#endif
|
||||
}
|
||||
else
|
||||
@@ -436,7 +466,6 @@ void HyperionDaemon::handleSettingsUpdate(const settings::type& settingsType, co
|
||||
// connect to HyperionDaemon signal
|
||||
connect(this, &HyperionDaemon::videoMode, _v4l2Grabber, &V4L2Wrapper::setVideoMode);
|
||||
connect(this, &HyperionDaemon::settingsChanged, _v4l2Grabber, &V4L2Wrapper::handleSettingsUpdate);
|
||||
connect(this, &HyperionDaemon::compStateChangeRequest, _v4l2Grabber, &V4L2Wrapper::compStateChangeRequest);
|
||||
#else
|
||||
Error(_log, "The v4l2 grabber can not be instantiated, because it has been left out from the build");
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user