mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2023-10-10 13:36:59 +02:00
fix: Backlight/BBDetector during effects (#682)
This commit is contained in:
parent
0fa5a24cec
commit
70f93c7171
@ -458,11 +458,10 @@ public slots:
|
||||
private slots:
|
||||
|
||||
///
|
||||
/// @brief Apply ComponentRegister emits for COMP_ALL. Enables/Disables core timers
|
||||
/// @param comp The component
|
||||
/// @param state The new state of the component
|
||||
/// @brief Handle whenever the visible component changed
|
||||
/// @param comp The new component
|
||||
///
|
||||
void updatedComponentState(const hyperion::Components comp, const bool state);
|
||||
void handleVisibleComponentChanged(const hyperion::Components& comp);
|
||||
|
||||
///
|
||||
/// @brief Apply settings updates for LEDS and COLOR
|
||||
@ -529,9 +528,6 @@ private:
|
||||
|
||||
QSize _ledGridSize;
|
||||
|
||||
/// Store the previous compID for smarter update()
|
||||
hyperion::Components _prevCompId;
|
||||
|
||||
/// Background effect instance, kept active to react on setting changes
|
||||
BGEffectHandler* _BGEffectHandler;
|
||||
/// Capture control for Daemon native capture
|
||||
|
@ -206,6 +206,12 @@ signals:
|
||||
///
|
||||
void visiblePriorityChanged(const quint8& priority);
|
||||
|
||||
///
|
||||
/// @brief Emits whenever the current visible component changed
|
||||
/// @param comp The new component
|
||||
///
|
||||
void visibleComponentChanged(const hyperion::Components& comp);
|
||||
|
||||
///
|
||||
/// @brief Emits whenever a priority changes active state
|
||||
/// @param priority The priority who changed the active state
|
||||
@ -243,6 +249,12 @@ private slots:
|
||||
void setCurrentTime(void);
|
||||
|
||||
private:
|
||||
///
|
||||
/// @brief Get the component of the given priority
|
||||
/// @return The component
|
||||
///
|
||||
hyperion::Components getComponentOfPriority(const int& priority);
|
||||
|
||||
/// Logger instance
|
||||
Logger* _log;
|
||||
|
||||
@ -252,6 +264,9 @@ private:
|
||||
/// The manual select priority set with setPriority
|
||||
int _manualSelectedPriority;
|
||||
|
||||
// The last visible component
|
||||
hyperion::Components _prevVisComp = hyperion::COMP_INVALID;
|
||||
|
||||
/// The mapping from priority channel to led-information
|
||||
QMap<int, InputInfo> _activeInputs;
|
||||
|
||||
|
@ -54,7 +54,6 @@ Hyperion::Hyperion(const quint8& instance)
|
||||
, _log(Logger::getInstance("HYPERION"))
|
||||
, _hwLedCount()
|
||||
, _ledGridSize(hyperion::getLedLayoutGridSize(getSetting(settings::LEDS).array()))
|
||||
, _prevCompId(hyperion::COMP_INVALID)
|
||||
, _ledBuffer(_ledString.leds().size(), ColorRgb::BLACK)
|
||||
{
|
||||
|
||||
@ -89,9 +88,10 @@ void Hyperion::start()
|
||||
|
||||
// connect Hyperion::update with Muxer visible priority changes as muxer updates independent
|
||||
connect(&_muxer, &PriorityMuxer::visiblePriorityChanged, this, &Hyperion::update);
|
||||
connect(&_muxer, &PriorityMuxer::visibleComponentChanged, this, &Hyperion::handleVisibleComponentChanged);
|
||||
|
||||
// listens for ComponentRegister changes of COMP_ALL to perform core enable/disable actions
|
||||
connect(&_componentRegister, &ComponentRegister::updatedComponentState, this, &Hyperion::updatedComponentState);
|
||||
// connect(&_componentRegister, &ComponentRegister::updatedComponentState, this, &Hyperion::updatedComponentState);
|
||||
|
||||
// listen for settings updates of this instance (LEDS & COLOR)
|
||||
connect(_settingsManager, &SettingsManager::settingsChanged, this, &Hyperion::handleSettingsUpdate);
|
||||
@ -518,18 +518,11 @@ const QString & Hyperion::getActiveDeviceType()
|
||||
return _ledDeviceWrapper->getActiveDeviceType();
|
||||
}
|
||||
|
||||
void Hyperion::updatedComponentState(const hyperion::Components comp, const bool state)
|
||||
void Hyperion::handleVisibleComponentChanged(const hyperion::Components &comp)
|
||||
{
|
||||
QMutexLocker lock(&_changes);
|
||||
|
||||
// evaluate comp change
|
||||
if (comp != _prevCompId)
|
||||
{
|
||||
_imageProcessor->setBlackbarDetectDisable((_prevCompId == hyperion::COMP_EFFECT));
|
||||
_imageProcessor->setHardLedMappingType((_prevCompId == hyperion::COMP_EFFECT) ? 0 : -1);
|
||||
_prevCompId = comp;
|
||||
_raw2ledAdjustment->setBacklightEnabled((_prevCompId != hyperion::COMP_COLOR && _prevCompId != hyperion::COMP_EFFECT));
|
||||
}
|
||||
_imageProcessor->setBlackbarDetectDisable((comp == hyperion::COMP_EFFECT));
|
||||
_imageProcessor->setHardLedMappingType((comp == hyperion::COMP_EFFECT) ? 0 : -1);
|
||||
_raw2ledAdjustment->setBacklightEnabled((comp != hyperion::COMP_COLOR && comp != hyperion::COMP_EFFECT));
|
||||
}
|
||||
|
||||
void Hyperion::update()
|
||||
|
@ -133,6 +133,11 @@ const PriorityMuxer::InputInfo PriorityMuxer::getInputInfo(const int priority) c
|
||||
return elemIt.value();
|
||||
}
|
||||
|
||||
hyperion::Components PriorityMuxer::getComponentOfPriority(const int &priority)
|
||||
{
|
||||
return _activeInputs[priority].componentId;
|
||||
}
|
||||
|
||||
void PriorityMuxer::registerInput(const int priority, const hyperion::Components& component, const QString& origin, const QString& owner, unsigned smooth_cfg)
|
||||
{
|
||||
// detect new registers
|
||||
@ -322,16 +327,18 @@ void PriorityMuxer::setCurrentTime(void)
|
||||
}
|
||||
}
|
||||
// apply & emit on change (after apply!)
|
||||
bool changed = false;
|
||||
if(_currentPriority != newPriority)
|
||||
changed = true;
|
||||
|
||||
_currentPriority = newPriority;
|
||||
|
||||
if(changed)
|
||||
if (_currentPriority != newPriority)
|
||||
{
|
||||
_currentPriority = newPriority;
|
||||
Debug(_log, "Set visible priority to %d", newPriority);
|
||||
emit visiblePriorityChanged(newPriority);
|
||||
// check for visible comp change
|
||||
hyperion::Components comp = getComponentOfPriority(newPriority);
|
||||
if (comp != _prevVisComp)
|
||||
{
|
||||
_prevVisComp = comp;
|
||||
emit visibleComponentChanged(comp);
|
||||
}
|
||||
emit prioritiesChanged();
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user