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