diff --git a/ChangeLog b/ChangeLog index 9aa7a927..6cdfbb2f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -19274,3 +19274,5 @@ 2019-11-26 Fred Gleason * Fixed a regression in rdcatch(1) that caused the 'Source' dropdown in the 'Edit Recording' dialog to fail to be populated properly. +2019-11-27 Fred Gleason + * Fixed a regression in rdcatchd(8) that broke audio metering. diff --git a/lib/rdcae.cpp b/lib/rdcae.cpp index 8beadc48..b5a2ed0c 100644 --- a/lib/rdcae.cpp +++ b/lib/rdcae.cpp @@ -123,10 +123,10 @@ void RDCae::connectHost() } -void RDCae::enableMetering(std::vector *cards) +void RDCae::enableMetering(QList *cards) { QString cmd=QString().sprintf("ME %u",cae_meter_socket->port()); - for(unsigned i=0;isize();i++) { + for(int i=0;isize();i++) { if(cards->at(i)>=0) { bool found=false; for(unsigned j=0;j - -#include -#include -#include #include + #include +#include +#include #include #include @@ -45,7 +43,7 @@ class RDCae : public QObject RDCae(RDStation *station,RDConfig *config,QObject *parent=0); ~RDCae(); void connectHost(); - void enableMetering(std::vector *cards); + void enableMetering(QList *cards); bool loadPlay(int card,QString name,int *stream,int *handle); void unloadPlay(int handle); void positionPlay(int handle,int pos); diff --git a/rdairplay/rdairplay.cpp b/rdairplay/rdairplay.cpp index d29e7cdf..970d5639 100644 --- a/rdairplay/rdairplay.cpp +++ b/rdairplay/rdairplay.cpp @@ -787,7 +787,7 @@ QSizePolicy MainWidget::sizePolicy() const void MainWidget::caeConnectedData(bool state) { - std::vector cards; + QList cards; cards.push_back(rda->airplayConf()->card(RDAirPlayConf::MainLog1Channel)); cards.push_back(rda->airplayConf()->card(RDAirPlayConf::MainLog2Channel)); diff --git a/rdcartslots/rdcartslots.cpp b/rdcartslots/rdcartslots.cpp index 133f9072..c5ef9fec 100644 --- a/rdcartslots/rdcartslots.cpp +++ b/rdcartslots/rdcartslots.cpp @@ -144,7 +144,7 @@ QSize MainWidget::sizeHint() const void MainWidget::caeConnectedData(bool state) { - std::vector cards; + QList cards; QString sql=QString("select CARD from CARTSLOTS where ")+ "STATION_NAME=\""+RDEscapeString(rda->config()->stationName())+"\""; diff --git a/rdcatchd/rdcatchd.cpp b/rdcatchd/rdcatchd.cpp index cc700723..fd6c0e31 100644 --- a/rdcatchd/rdcatchd.cpp +++ b/rdcatchd/rdcatchd.cpp @@ -868,6 +868,20 @@ void MainObject::garbageData() void MainObject::isConnectedData(bool state) { + if(state) { + QList cards; + QString sql=QString("select CARD_NUMBER from DECKS where ")+ + "STATION_NAME=\""+RDEscapeString(rda->station()->name())+"\" && "+ + "CARD_NUMBER>=0"; + RDSqlQuery *q=new RDSqlQuery(sql); + while(q->next()) { + if(!cards.contains(q->value(0).toInt())) { + cards.push_back(q->value(0).toInt()); + } + } + delete q; + rda->cae()->enableMetering(&cards); + } if(!state) { rda->syslog(LOG_ERR,"aborting - unable to connect to Core AudioEngine"); exit(1); diff --git a/rdlibrary/rdlibrary.cpp b/rdlibrary/rdlibrary.cpp index b52f64a4..20411948 100644 --- a/rdlibrary/rdlibrary.cpp +++ b/rdlibrary/rdlibrary.cpp @@ -516,7 +516,7 @@ QSizePolicy MainWidget::sizePolicy() const void MainWidget::caeConnectedData(bool state) { if(state) { - std::vector cards; + QList cards; cards.push_back(rda->libraryConf()->inputCard()); cards.push_back(rda->libraryConf()->outputCard()); rda->cae()->enableMetering(&cards); diff --git a/rdlogedit/rdlogedit.cpp b/rdlogedit/rdlogedit.cpp index 9789e454..c05792c1 100644 --- a/rdlogedit/rdlogedit.cpp +++ b/rdlogedit/rdlogedit.cpp @@ -235,7 +235,7 @@ void MainWidget::connectedData(bool state) void MainWidget::caeConnectedData(bool state) { - std::vector cards; + QList cards; RDLogeditConf *conf=new RDLogeditConf(rda->config()->stationName()); cards.push_back(conf->inputCard()); diff --git a/rdpanel/rdpanel.cpp b/rdpanel/rdpanel.cpp index a489d937..85ea2fd0 100644 --- a/rdpanel/rdpanel.cpp +++ b/rdpanel/rdpanel.cpp @@ -296,7 +296,7 @@ QSizePolicy MainWidget::sizePolicy() const void MainWidget::caeConnectedData(bool state) { - std::vector cards; + QList cards; cards.push_back(rda->airplayConf()->card(RDAirPlayConf::SoundPanel1Channel)); cards.push_back(rda->airplayConf()->card(RDAirPlayConf::SoundPanel2Channel));