Do not limit priorities for Boblight (#1269) (#1298)

* Do not limit priorities for Boblight (#1269)

* Boblight - Allow to exclude component from build

* Fix merge

* Amlogic - Correct Pixelformat reference

* Remove "wrong" Amlogic ifdef, which was not working before
This commit is contained in:
LordGrey 2021-09-15 10:32:19 +02:00 committed by GitHub
parent 8a785e70c8
commit da49f25b4e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 273 additions and 226 deletions

View File

@ -42,11 +42,15 @@ endif()
# Set build variables # Set build variables
SET ( DEFAULT_AMLOGIC OFF ) SET ( DEFAULT_AMLOGIC OFF )
SET ( DEFAULT_BOBLIGHT ON )
SET ( DEFAULT_DISPMANX OFF ) SET ( DEFAULT_DISPMANX OFF )
SET ( DEFAULT_DX OFF )
SET ( DEFAULT_MF OFF )
SET ( DEFAULT_OSX OFF ) SET ( DEFAULT_OSX OFF )
SET ( DEFAULT_QT ON ) SET ( DEFAULT_QT ON )
SET ( DEFAULT_X11 OFF ) SET ( DEFAULT_X11 OFF )
SET ( DEFAULT_XCB OFF ) SET ( DEFAULT_XCB OFF )
SET ( DEFAULT_V4L2 OFF )
SET ( DEFAULT_WS281XPWM OFF ) SET ( DEFAULT_WS281XPWM OFF )
SET ( DEFAULT_AVAHI ON ) SET ( DEFAULT_AVAHI ON )
SET ( DEFAULT_USE_SHARED_AVAHI_LIBS ON ) SET ( DEFAULT_USE_SHARED_AVAHI_LIBS ON )
@ -55,7 +59,7 @@ SET ( DEFAULT_USE_SYSTEM_PROTO_LIBS OFF )
SET ( DEFAULT_USE_SYSTEM_MBEDTLS_LIBS OFF ) SET ( DEFAULT_USE_SYSTEM_MBEDTLS_LIBS OFF )
SET ( DEFAULT_TESTS OFF ) SET ( DEFAULT_TESTS OFF )
SET ( DEFAULT_EXPERIMENTAL OFF ) SET ( DEFAULT_EXPERIMENTAL OFF )
SET ( DEFAULT_MF OFF ) SET ( DEFAULT_CEC OFF )
SET ( DEFAULT_DEPLOY_DEPENDENCIES ON ) SET ( DEFAULT_DEPLOY_DEPENDENCIES ON )
IF ( ${CMAKE_SYSTEM} MATCHES "Linux" ) IF ( ${CMAKE_SYSTEM} MATCHES "Linux" )
@ -159,6 +163,10 @@ STRING( REPLACE "-DEV" "" PLATFORM_DEFINE "${PLATFORM_DEFINE}" )
ADD_DEFINITIONS( ${PLATFORM_DEFINE} ) ADD_DEFINITIONS( ${PLATFORM_DEFINE} )
# set the build options # set the build options
option(ENABLE_BOBLIGHT "Enable BOBLIGHT server" ${DEFAULT_BOBLIGHT} )
message(STATUS "ENABLE_BOBLIGHT = ${ENABLE_BOBLIGHT}")
option(ENABLE_AMLOGIC "Enable the AMLOGIC video grabber" ${DEFAULT_AMLOGIC} ) option(ENABLE_AMLOGIC "Enable the AMLOGIC video grabber" ${DEFAULT_AMLOGIC} )
message(STATUS "ENABLE_AMLOGIC = ${ENABLE_AMLOGIC}") message(STATUS "ENABLE_AMLOGIC = ${ENABLE_AMLOGIC}")

View File

@ -45,6 +45,9 @@
// Define to enable CEC // Define to enable CEC
#cmakedefine ENABLE_CEC #cmakedefine ENABLE_CEC
// Define to enable boblight server
#cmakedefine ENABLE_BOBLIGHT
// Define to enable the USB / HID devices // Define to enable the USB / HID devices
#cmakedefine ENABLE_USB_HID #cmakedefine ENABLE_USB_HID

View File

@ -1,6 +1,8 @@
$(document).ready(function () { $(document).ready(function () {
performTranslation(); performTranslation();
var BOBLIGHT_ENABLED = window.comps.find(element => element.name == "BOBLIGHTSERVER");
var conf_editor_net = null; var conf_editor_net = null;
var conf_editor_json = null; var conf_editor_json = null;
var conf_editor_proto = null; var conf_editor_proto = null;
@ -8,8 +10,7 @@ $(document).ready( function() {
var conf_editor_bobl = null; var conf_editor_bobl = null;
var conf_editor_forw = null; var conf_editor_forw = null;
if(window.showOptHelp) if (window.showOptHelp) {
{
//network //network
$('#conf_cont').append(createRow('conf_cont_net')) $('#conf_cont').append(createRow('conf_cont_net'))
$('#conf_cont_net').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_net_heading_title"), 'editor_container_net', 'btn_submit_net', 'panel-system')); $('#conf_cont_net').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_net_heading_title"), 'editor_container_net', 'btn_submit_net', 'panel-system'));
@ -31,20 +32,20 @@ $(document).ready( function() {
$('#conf_cont_proto').append(createHelpTable(window.schema.protoServer.properties, $.i18n("edt_conf_pbs_heading_title"), "protoServerHelpPanelId")); $('#conf_cont_proto').append(createHelpTable(window.schema.protoServer.properties, $.i18n("edt_conf_pbs_heading_title"), "protoServerHelpPanelId"));
//boblight //boblight
if (BOBLIGHT_ENABLED) {
$('#conf_cont').append(createRow('conf_cont_bobl')) $('#conf_cont').append(createRow('conf_cont_bobl'))
$('#conf_cont_bobl').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_bobls_heading_title"), 'editor_container_boblightserver', 'btn_submit_boblightserver', 'panel-system')); $('#conf_cont_bobl').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_bobls_heading_title"), 'editor_container_boblightserver', 'btn_submit_boblightserver', 'panel-system'));
$('#conf_cont_bobl').append(createHelpTable(window.schema.boblightServer.properties, $.i18n("edt_conf_bobls_heading_title"), "boblightServerHelpPanelId")); $('#conf_cont_bobl').append(createHelpTable(window.schema.boblightServer.properties, $.i18n("edt_conf_bobls_heading_title"), "boblightServerHelpPanelId"));
}
//forwarder //forwarder
if(storedAccess != 'default') if (storedAccess != 'default') {
{
$('#conf_cont').append(createRow('conf_cont_fw')) $('#conf_cont').append(createRow('conf_cont_fw'))
$('#conf_cont_fw').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_fw_heading_title"), 'editor_container_forwarder', 'btn_submit_forwarder', 'panel-system')); $('#conf_cont_fw').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_fw_heading_title"), 'editor_container_forwarder', 'btn_submit_forwarder', 'panel-system'));
$('#conf_cont_fw').append(createHelpTable(window.schema.forwarder.properties, $.i18n("edt_conf_fw_heading_title"), "forwarderHelpPanelId")); $('#conf_cont_fw').append(createHelpTable(window.schema.forwarder.properties, $.i18n("edt_conf_fw_heading_title"), "forwarderHelpPanelId"));
} }
} }
else else {
{
$('#conf_cont').addClass('row'); $('#conf_cont').addClass('row');
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_net_heading_title"), 'editor_container_net', 'btn_submit_net')); $('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_net_heading_title"), 'editor_container_net', 'btn_submit_net'));
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_js_heading_title"), 'editor_container_jsonserver', 'btn_submit_jsonserver')); $('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_js_heading_title"), 'editor_container_jsonserver', 'btn_submit_jsonserver'));
@ -125,6 +126,7 @@ $(document).ready( function() {
}); });
//boblight //boblight
if (BOBLIGHT_ENABLED) {
conf_editor_bobl = createJsonEditor('editor_container_boblightserver', { conf_editor_bobl = createJsonEditor('editor_container_boblightserver', {
boblightServer: window.schema.boblightServer boblightServer: window.schema.boblightServer
}, true, true); }, true, true);
@ -144,9 +146,9 @@ $(document).ready( function() {
$('#btn_submit_boblightserver').off().on('click', function () { $('#btn_submit_boblightserver').off().on('click', function () {
requestWriteConfig(conf_editor_bobl.getValue()); requestWriteConfig(conf_editor_bobl.getValue());
}); });
}
if(storedAccess != 'default') if (storedAccess != 'default') {
{
//forwarder //forwarder
conf_editor_forw = createJsonEditor('editor_container_forwarder', { conf_editor_forw = createJsonEditor('editor_container_forwarder', {
forwarder: window.schema.forwarder forwarder: window.schema.forwarder
@ -170,23 +172,22 @@ $(document).ready( function() {
} }
//create introduction //create introduction
if(window.showOptHelp) if (window.showOptHelp) {
{
createHint("intro", $.i18n('conf_network_net_intro'), "editor_container_net"); createHint("intro", $.i18n('conf_network_net_intro'), "editor_container_net");
createHint("intro", $.i18n('conf_network_json_intro'), "editor_container_jsonserver"); createHint("intro", $.i18n('conf_network_json_intro'), "editor_container_jsonserver");
createHint("intro", $.i18n('conf_network_fbs_intro'), "editor_container_fbserver"); createHint("intro", $.i18n('conf_network_fbs_intro'), "editor_container_fbserver");
createHint("intro", $.i18n('conf_network_proto_intro'), "editor_container_protoserver"); createHint("intro", $.i18n('conf_network_proto_intro'), "editor_container_protoserver");
if (BOBLIGHT_ENABLED) {
createHint("intro", $.i18n('conf_network_bobl_intro'), "editor_container_boblightserver"); createHint("intro", $.i18n('conf_network_bobl_intro'), "editor_container_boblightserver");
}
createHint("intro", $.i18n('conf_network_forw_intro'), "editor_container_forwarder"); createHint("intro", $.i18n('conf_network_forw_intro'), "editor_container_forwarder");
createHint("intro", $.i18n('conf_network_tok_intro'), "tok_desc_cont"); createHint("intro", $.i18n('conf_network_tok_intro'), "tok_desc_cont");
} }
// Token handling // Token handling
function buildTokenList() function buildTokenList() {
{
$('.tktbody').html(""); $('.tktbody').html("");
for(var key in tokenList) for (var key in tokenList) {
{
var lastUse = (tokenList[key].last_use) ? tokenList[key].last_use : "-"; var lastUse = (tokenList[key].last_use) ? tokenList[key].last_use : "-";
var btn = '<button id="tok' + tokenList[key].id + '" type="button" class="btn btn-danger">' + $.i18n('general_btn_delete') + '</button>'; var btn = '<button id="tok' + tokenList[key].id + '" type="button" class="btn btn-danger">' + $.i18n('general_btn_delete') + '</button>';
$('.tktbody').append(createTableRow([tokenList[key].comment, lastUse, btn], false, true)); $('.tktbody').append(createTableRow([tokenList[key].comment, lastUse, btn], false, true));
@ -198,8 +199,7 @@ $(document).ready( function() {
$('.tkthead').html(createTableRow([$.i18n('conf_network_tok_cidhead'), $.i18n('conf_network_tok_lastuse'), $.i18n('general_btn_delete')], true, true)); $('.tkthead').html(createTableRow([$.i18n('conf_network_tok_cidhead'), $.i18n('conf_network_tok_lastuse'), $.i18n('general_btn_delete')], true, true));
buildTokenList(); buildTokenList();
function handleDeleteToken(e) function handleDeleteToken(e) {
{
var key = e.currentTarget.id.replace("tok", ""); var key = e.currentTarget.id.replace("tok", "");
requestTokenDelete(key); requestTokenDelete(key);
$('#tok' + key).parent().parent().remove(); $('#tok' + key).parent().parent().remove();
@ -231,8 +231,7 @@ $(document).ready( function() {
//Reorder hardcoded token div after the general token setting div //Reorder hardcoded token div after the general token setting div
$("#conf_cont_tok").insertAfter("#conf_cont_net"); $("#conf_cont_tok").insertAfter("#conf_cont_net");
function checkApiTokenState(state) function checkApiTokenState(state) {
{
if (state == false) if (state == false)
$("#conf_cont_tok").attr('style', 'display:none') $("#conf_cont_tok").attr('style', 'display:none')
else else
@ -248,3 +247,4 @@ $(document).ready( function() {
removeOverlay(); removeOverlay();
}); });

View File

@ -46,7 +46,9 @@ class ColorAdjustment;
class SettingsManager; class SettingsManager;
class BGEffectHandler; class BGEffectHandler;
class CaptureCont; class CaptureCont;
#if defined(ENABLE_BOBLIGHT)
class BoblightServer; class BoblightServer;
#endif
class LedDeviceWrapper; class LedDeviceWrapper;
class Logger; class Logger;
@ -545,8 +547,10 @@ private:
VideoMode _currVideoMode = VideoMode::VIDEO_2D; VideoMode _currVideoMode = VideoMode::VIDEO_2D;
#if defined(ENABLE_BOBLIGHT)
/// Boblight instance /// Boblight instance
BoblightServer* _boblightServer; BoblightServer* _boblightServer;
#endif
bool _readOnlyMode; bool _readOnlyMode;
}; };

View File

@ -1,6 +1,8 @@
#pragma once #pragma once
#include <QString> #include <QString>
#include "HyperionConfig.h"
namespace hyperion namespace hyperion
{ {
@ -14,7 +16,9 @@ enum Components
COMP_SMOOTHING, COMP_SMOOTHING,
COMP_BLACKBORDER, COMP_BLACKBORDER,
COMP_FORWARDER, COMP_FORWARDER,
#if defined(ENABLE_BOBLIGHT)
COMP_BOBLIGHTSERVER, COMP_BOBLIGHTSERVER,
#endif
COMP_GRABBER, COMP_GRABBER,
COMP_V4L, COMP_V4L,
COMP_COLOR, COMP_COLOR,
@ -33,7 +37,9 @@ inline const char* componentToString(Components c)
case COMP_SMOOTHING: return "Smoothing"; case COMP_SMOOTHING: return "Smoothing";
case COMP_BLACKBORDER: return "Blackborder detector"; case COMP_BLACKBORDER: return "Blackborder detector";
case COMP_FORWARDER: return "Json/Proto forwarder"; case COMP_FORWARDER: return "Json/Proto forwarder";
#if defined(ENABLE_BOBLIGHT)
case COMP_BOBLIGHTSERVER:return "Boblight server"; case COMP_BOBLIGHTSERVER:return "Boblight server";
#endif
case COMP_GRABBER: return "Framegrabber"; case COMP_GRABBER: return "Framegrabber";
case COMP_V4L: return "V4L capture device"; case COMP_V4L: return "V4L capture device";
case COMP_COLOR: return "Solid color"; case COMP_COLOR: return "Solid color";
@ -54,7 +60,9 @@ inline const char* componentToIdString(Components c)
case COMP_SMOOTHING: return "SMOOTHING"; case COMP_SMOOTHING: return "SMOOTHING";
case COMP_BLACKBORDER: return "BLACKBORDER"; case COMP_BLACKBORDER: return "BLACKBORDER";
case COMP_FORWARDER: return "FORWARDER"; case COMP_FORWARDER: return "FORWARDER";
#if defined(ENABLE_BOBLIGHT)
case COMP_BOBLIGHTSERVER:return "BOBLIGHTSERVER"; case COMP_BOBLIGHTSERVER:return "BOBLIGHTSERVER";
#endif
case COMP_GRABBER: return "GRABBER"; case COMP_GRABBER: return "GRABBER";
case COMP_V4L: return "V4L"; case COMP_V4L: return "V4L";
case COMP_COLOR: return "COLOR"; case COMP_COLOR: return "COLOR";
@ -74,7 +82,9 @@ inline Components stringToComponent(const QString& component)
if (cmp == "SMOOTHING") return COMP_SMOOTHING; if (cmp == "SMOOTHING") return COMP_SMOOTHING;
if (cmp == "BLACKBORDER") return COMP_BLACKBORDER; if (cmp == "BLACKBORDER") return COMP_BLACKBORDER;
if (cmp == "FORWARDER") return COMP_FORWARDER; if (cmp == "FORWARDER") return COMP_FORWARDER;
#if defined(ENABLE_BOBLIGHT)
if (cmp == "BOBLIGHTSERVER")return COMP_BOBLIGHTSERVER; if (cmp == "BOBLIGHTSERVER")return COMP_BOBLIGHTSERVER;
#endif
if (cmp == "GRABBER") return COMP_GRABBER; if (cmp == "GRABBER") return COMP_GRABBER;
if (cmp == "V4L") return COMP_V4L; if (cmp == "V4L") return COMP_V4L;
if (cmp == "COLOR") return COMP_COLOR; if (cmp == "COLOR") return COMP_COLOR;

View File

@ -10,7 +10,9 @@ add_subdirectory(jsonserver)
add_subdirectory(flatbufserver) add_subdirectory(flatbufserver)
add_subdirectory(protoserver) add_subdirectory(protoserver)
add_subdirectory(ssdp) add_subdirectory(ssdp)
if(ENABLE_BOBLIGHT)
add_subdirectory(boblightserver) add_subdirectory(boblightserver)
endif()
add_subdirectory(leddevice) add_subdirectory(leddevice)
add_subdirectory(utils) add_subdirectory(utils)
add_subdirectory(effectengine) add_subdirectory(effectengine)

View File

@ -21,10 +21,18 @@
#include "HyperionConfig.h" #include "HyperionConfig.h"
#include <hyperion/Hyperion.h> #include <hyperion/Hyperion.h>
#include <utils/QStringUtils.h> #include <utils/QStringUtils.h>
#include <hyperion/PriorityMuxer.h>
// project includes // project includes
#include "BoblightClientConnection.h" #include "BoblightClientConnection.h"
// Constants
namespace {
const int BOBLIGHT_DEFAULT_PRIORITY = 128;
const int BOBLIGHT_MIN_PRIORITY = PriorityMuxer::FG_PRIORITY+1;
const int BOBLIGHT_MAX_PRIORITY = PriorityMuxer::BG_PRIORITY-1;
} //End of constants
BoblightClientConnection::BoblightClientConnection(Hyperion* hyperion, QTcpSocket* socket, int priority) BoblightClientConnection::BoblightClientConnection(Hyperion* hyperion, QTcpSocket* socket, int priority)
: QObject() : QObject()
, _locale(QLocale::C) , _locale(QLocale::C)
@ -48,7 +56,7 @@ BoblightClientConnection::BoblightClientConnection(Hyperion* hyperion, QTcpSocke
BoblightClientConnection::~BoblightClientConnection() BoblightClientConnection::~BoblightClientConnection()
{ {
// clear the current channel // clear the current channel
if (_priority != 0 && _priority >= 128 && _priority < 254) if (_priority != 0 && _priority >= BOBLIGHT_MIN_PRIORITY && _priority <= BOBLIGHT_MAX_PRIORITY)
_hyperion->clear(_priority); _hyperion->clear(_priority);
delete _socket; delete _socket;
@ -110,7 +118,7 @@ QString BoblightClientConnection::readMessage(const char *data, const size_t siz
void BoblightClientConnection::socketClosed() void BoblightClientConnection::socketClosed()
{ {
// clear the current channel // clear the current channel
if (_priority >= 128 && _priority < 254) if (_priority >= BOBLIGHT_MIN_PRIORITY && _priority <= BOBLIGHT_MAX_PRIORITY)
_hyperion->clear(_priority); _hyperion->clear(_priority);
emit connectionClosed(this); emit connectionClosed(this);
@ -171,7 +179,7 @@ void BoblightClientConnection::handleMessage(const QString & message)
rgb.green = green; rgb.green = green;
rgb.blue = blue; rgb.blue = blue;
if (_priority == 0 || _priority < 128 || _priority >= 254) if (_priority == 0 || _priority < BOBLIGHT_MIN_PRIORITY || _priority > BOBLIGHT_MAX_PRIORITY)
return; return;
// send current color values to hyperion if this is the last led assuming leds values are send in order of id // send current color values to hyperion if this is the last led assuming leds values are send in order of id
@ -202,16 +210,17 @@ void BoblightClientConnection::handleMessage(const QString & message)
if (_priority != 0 && _hyperion->getPriorityInfo(_priority).componentId == hyperion::COMP_BOBLIGHTSERVER) if (_priority != 0 && _hyperion->getPriorityInfo(_priority).componentId == hyperion::COMP_BOBLIGHTSERVER)
_hyperion->clear(_priority); _hyperion->clear(_priority);
if (prio < 128 || prio >= 254) if (prio < BOBLIGHT_MIN_PRIORITY || prio > BOBLIGHT_MAX_PRIORITY)
{ {
_priority = 128; _priority = BOBLIGHT_DEFAULT_PRIORITY;
while (_hyperion->getActivePriorities().contains(_priority)) while (_hyperion->getActivePriorities().contains(_priority))
{ {
_priority += 1; _priority += 1;
} }
// warn against invalid priority // warn against invalid priority
Warning(_log, "The priority %i is not in the priority range between 128 and 253. Priority %i is used instead.", prio, _priority); Warning(_log, "The priority %i is not in the priority range of [%d-%d]. Priority %i is used instead.",
prio, BOBLIGHT_MIN_PRIORITY, BOBLIGHT_MAX_PRIORITY, _priority);
// register new priority (previously modified) // register new priority (previously modified)
_hyperion->registerInput(_priority, hyperion::COMP_BOBLIGHTSERVER, QString("Boblight@%1").arg(_socket->peerAddress().toString())); _hyperion->registerInput(_priority, hyperion::COMP_BOBLIGHTSERVER, QString("Boblight@%1").arg(_socket->peerAddress().toString()));
} }
@ -228,7 +237,7 @@ void BoblightClientConnection::handleMessage(const QString & message)
} }
else if (messageParts[0] == "sync") else if (messageParts[0] == "sync")
{ {
if ( _priority >= 128 && _priority < 254) if (_priority >= BOBLIGHT_MIN_PRIORITY && _priority <= BOBLIGHT_MAX_PRIORITY)
_hyperion->setInput(_priority, _ledColors); // send current color values to hyperion _hyperion->setInput(_priority, _ledColors); // send current color values to hyperion
return; return;

View File

@ -176,13 +176,8 @@ bool FramebufferFrameGrabber::getScreenInfo()
break; break;
case 24: _pixelFormat = PixelFormat::BGR24; case 24: _pixelFormat = PixelFormat::BGR24;
break; break;
#ifdef ENABLE_AMLOGIC
case 32: _pixelFormat = PixelFormat::PIXELFORMAT_RGB32;
break;
#else
case 32: _pixelFormat = PixelFormat::BGR32; case 32: _pixelFormat = PixelFormat::BGR32;
break; break;
#endif
default: default:
rc= false; rc= false;
QString errorReason = QString ("Unknown pixel format: %1 bits per pixel").arg(static_cast<int>(_varInfo.bits_per_pixel)); QString errorReason = QString ("Unknown pixel format: %1 bits per pixel").arg(static_cast<int>(_varInfo.bits_per_pixel));

View File

@ -22,12 +22,15 @@ target_link_libraries(hyperion
flatbufserver flatbufserver
flatbuffers flatbuffers
leddevice leddevice
boblightserver
effectengine effectengine
database database
${QT_LIBRARIES} ${QT_LIBRARIES}
) )
if(ENABLE_BOBLIGHT)
target_link_libraries(hyperion boblightserver)
endif()
if (ENABLE_AVAHI) if (ENABLE_AVAHI)
target_link_libraries(hyperion bonjour) target_link_libraries(hyperion bonjour)
endif () endif ()

View File

@ -11,7 +11,12 @@ ComponentRegister::ComponentRegister(Hyperion* hyperion)
{ {
// init all comps to false // init all comps to false
QVector<hyperion::Components> vect; QVector<hyperion::Components> vect;
vect << COMP_ALL << COMP_SMOOTHING << COMP_BLACKBORDER << COMP_FORWARDER << COMP_BOBLIGHTSERVER << COMP_GRABBER << COMP_V4L << COMP_LEDDEVICE; vect << COMP_ALL << COMP_SMOOTHING << COMP_BLACKBORDER << COMP_FORWARDER << COMP_GRABBER << COMP_V4L << COMP_LEDDEVICE;
#if defined(ENABLE_BOBLIGHT)
vect << COMP_BOBLIGHTSERVER;
#endif
for(auto e : vect) for(auto e : vect)
{ {
_componentStates.emplace(e, (e == COMP_ALL)); _componentStates.emplace(e, (e == COMP_ALL));

View File

@ -37,7 +37,9 @@
#include <hyperion/CaptureCont.h> #include <hyperion/CaptureCont.h>
// Boblight // Boblight
#if defined(ENABLE_BOBLIGHT)
#include <boblightserver/BoblightServer.h> #include <boblightserver/BoblightServer.h>
#endif
Hyperion::Hyperion(quint8 instance, bool readonlyMode) Hyperion::Hyperion(quint8 instance, bool readonlyMode)
: QObject() : QObject()
@ -58,7 +60,9 @@ Hyperion::Hyperion(quint8 instance, bool readonlyMode)
, _BGEffectHandler(nullptr) , _BGEffectHandler(nullptr)
, _captureCont(nullptr) , _captureCont(nullptr)
, _ledBuffer(_ledString.leds().size(), ColorRgb::BLACK) , _ledBuffer(_ledString.leds().size(), ColorRgb::BLACK)
#if defined(ENABLE_BOBLIGHT)
, _boblightServer(nullptr) , _boblightServer(nullptr)
#endif
, _readOnlyMode(readonlyMode) , _readOnlyMode(readonlyMode)
{ {
@ -148,9 +152,11 @@ void Hyperion::start()
// if there is no startup / background effect and no sending capture interface we probably want to push once BLACK (as PrioMuxer won't emit a priority change) // if there is no startup / background effect and no sending capture interface we probably want to push once BLACK (as PrioMuxer won't emit a priority change)
update(); update();
#if defined(ENABLE_BOBLIGHT)
// boblight, can't live in global scope as it depends on layout // boblight, can't live in global scope as it depends on layout
_boblightServer = new BoblightServer(this, getSetting(settings::BOBLSERVER)); _boblightServer = new BoblightServer(this, getSetting(settings::BOBLSERVER));
connect(this, &Hyperion::settingsChanged, _boblightServer, &BoblightServer::handleSettingsUpdate); connect(this, &Hyperion::settingsChanged, _boblightServer, &BoblightServer::handleSettingsUpdate);
#endif
// instance initiated, enter thread event loop // instance initiated, enter thread event loop
emit started(); emit started();
@ -168,7 +174,9 @@ void Hyperion::freeObjects()
clear(-1,true); clear(-1,true);
// delete components on exit of hyperion core // delete components on exit of hyperion core
#if defined(ENABLE_BOBLIGHT)
delete _boblightServer; delete _boblightServer;
#endif
delete _captureCont; delete _captureCont;
delete _effectEngine; delete _effectEngine;
delete _raw2ledAdjustment; delete _raw2ledAdjustment;

View File

@ -23,8 +23,8 @@
{ {
"type" : "integer", "type" : "integer",
"title" : "edt_conf_general_priority_title", "title" : "edt_conf_general_priority_title",
"minimum" : 100, "minimum" : 2,
"maximum" : 254, "maximum" : 253,
"default" : 128, "default" : 128,
"propertyOrder" : 3 "propertyOrder" : 3
} }

View File

@ -108,7 +108,7 @@ public:
/// ///
/// Enable/Disable components during runtime /// Enable/Disable components during runtime
/// ///
/// @param component The component [SMOOTHING, BLACKBORDER, FORWARDER, BOBLIGHT_SERVER, GRABBER] /// @param component The component [SMOOTHING, BLACKBORDER, FORWARDER, BOBLIGHTSERVER, GRABBER]
/// @param state The state of the component [true | false] /// @param state The state of the component [true | false]
/// ///
void setComponentState(const QString & component, bool state); void setComponentState(const QString & component, bool state);

View File

@ -103,8 +103,8 @@ int main(int argc, char * argv[])
BooleanOption & argSysInfo = parser.add<BooleanOption>('s', "sysinfo" , "show system info"); BooleanOption & argSysInfo = parser.add<BooleanOption>('s', "sysinfo" , "show system info");
BooleanOption & argClear = parser.add<BooleanOption>('x', "clear" , "Clear data for the priority channel provided by the -p option"); BooleanOption & argClear = parser.add<BooleanOption>('x', "clear" , "Clear data for the priority channel provided by the -p option");
BooleanOption & argClearAll = parser.add<BooleanOption>(0x0, "clearall" , "Clear data for all active priority channels"); BooleanOption & argClearAll = parser.add<BooleanOption>(0x0, "clearall" , "Clear data for all active priority channels");
Option & argEnableComponent = parser.add<Option> ('E', "enable" , "Enable the Component with the given name. Available Components are [SMOOTHING, BLACKBORDER, FORWARDER, BOBLIGHT_SERVER, GRABBER, V4L, LEDDEVICE]"); Option & argEnableComponent = parser.add<Option> ('E', "enable" , "Enable the Component with the given name. Available Components are [SMOOTHING, BLACKBORDER, FORWARDER, BOBLIGHTSERVER, GRABBER, V4L, LEDDEVICE]");
Option & argDisableComponent = parser.add<Option> ('D', "disable" , "Disable the Component with the given name. Available Components are [SMOOTHING, BLACKBORDER, FORWARDER, BOBLIGHT_SERVER, GRABBER, V4L, LEDDEVICE]"); Option & argDisableComponent = parser.add<Option> ('D', "disable" , "Disable the Component with the given name. Available Components are [SMOOTHING, BLACKBORDER, FORWARDER, BOBLIGHTSERVER, GRABBER, V4L, LEDDEVICE]");
Option & argId = parser.add<Option> ('q', "qualifier" , "Identifier(qualifier) of the adjustment to set"); Option & argId = parser.add<Option> ('q', "qualifier" , "Identifier(qualifier) of the adjustment to set");
IntOption & argBrightness = parser.add<IntOption> ('L', "brightness" , "Set the brightness gain of the LEDs"); IntOption & argBrightness = parser.add<IntOption> ('L', "brightness" , "Set the brightness gain of the LEDs");
IntOption & argBrightnessC = parser.add<IntOption> (0x0, "brightnessCompensation" , "Set the brightness compensation"); IntOption & argBrightnessC = parser.add<IntOption> (0x0, "brightnessCompensation" , "Set the brightness compensation");