2019-08-26 Fred Gleason <fredg@paravelsystems.com>

* Updated rdalsaconfig(8) to include a 'rate <sr>' line in
	each asound.conf(5) entry.
This commit is contained in:
Fred Gleason
2019-08-26 13:59:27 -04:00
parent 9d5cc4865c
commit c2e410f637
4 changed files with 37 additions and 3 deletions

View File

@@ -18950,3 +18950,6 @@
2019-08-24 Fred Gleason <fredg@paravelsystems.com> 2019-08-24 Fred Gleason <fredg@paravelsystems.com>
* Refactored rdalsaconfig(8) to use ALSA device IDs rather than * Refactored rdalsaconfig(8) to use ALSA device IDs rather than
ordinal numbers in asound.conf(5). ordinal numbers in asound.conf(5).
2019-08-26 Fred Gleason <fredg@paravelsystems.com>
* Updated rdalsaconfig(8) to include a 'rate <sr>' line in
each asound.conf(5) entry.

View File

@@ -28,6 +28,8 @@
#include <rd.h> #include <rd.h>
#include <rdcmd_switch.h> #include <rdcmd_switch.h>
#include <rdapplication.h>
#include <alsaitem.h> #include <alsaitem.h>
#include <rdalsaconfig.h> #include <rdalsaconfig.h>
@@ -66,6 +68,8 @@ void StartDaemons()
MainWidget::MainWidget(QWidget *parent) MainWidget::MainWidget(QWidget *parent)
: QWidget(parent) : QWidget(parent)
{ {
QString err_msg;
setWindowTitle(tr("RDAlsaConfig")+" v"+VERSION); setWindowTitle(tr("RDAlsaConfig")+" v"+VERSION);
// //
@@ -79,6 +83,15 @@ MainWidget::MainWidget(QWidget *parent)
setMinimumWidth(sizeHint().width()); setMinimumWidth(sizeHint().width());
setMinimumHeight(sizeHint().height()); setMinimumHeight(sizeHint().height());
//
// Open the Database
//
rda=new RDApplication("RDAlsaConfig","rdalsaconfig",RDALSACONFIG_USAGE,this);
if(!rda->open(&err_msg)) {
QMessageBox::critical(this,"RDAlsaConfig - "+tr("Error"),err_msg);
exit(1);
}
// //
// Generate Fonts // Generate Fonts
// //
@@ -121,7 +134,7 @@ MainWidget::MainWidget(QWidget *parent)
// //
// Load Available Devices and Configuration // Load Available Devices and Configuration
// //
alsa_system_model=new RDAlsaModel(); alsa_system_model=new RDAlsaModel(rda->system()->sampleRate(),this);
alsa_system_list->setModel(alsa_system_model); alsa_system_list->setModel(alsa_system_model);
LoadConfig(); LoadConfig();
@@ -336,6 +349,7 @@ void MainWidget::SaveConfig() const
fprintf(f," card %s\n", fprintf(f," card %s\n",
(const char *)alsa_system_model->card(indexes.at(i))->id().toUtf8()); (const char *)alsa_system_model->card(indexes.at(i))->id().toUtf8());
fprintf(f," device %d\n",alsa_system_model->pcmNumber(indexes.at(i))); fprintf(f," device %d\n",alsa_system_model->pcmNumber(indexes.at(i)));
fprintf(f," rate %u\n",rda->system()->sampleRate());
if(alsa_system_model->card(indexes.at(i))->id()=="Axia") { if(alsa_system_model->card(indexes.at(i))->id()=="Axia") {
fprintf(f," channels 2\n"); fprintf(f," channels 2\n");
} }

View File

@@ -26,9 +26,11 @@
#include <rdalsamodel.h> #include <rdalsamodel.h>
RDAlsaModel::RDAlsaModel(QObject *parent) RDAlsaModel::RDAlsaModel(unsigned samprate,QObject *parent)
: QAbstractListModel(parent) : QAbstractListModel(parent)
{ {
model_sample_rate=samprate;
LoadSystemConfig(); LoadSystemConfig();
} }
@@ -45,6 +47,19 @@ int RDAlsaModel::rowCount(const QModelIndex &parent) const
} }
Qt::ItemFlags RDAlsaModel::flags(const QModelIndex &index) const
{
Qt::ItemFlags flags=QAbstractListModel::flags(index);
if((model_alsa_cards.at(model_card_index.at(index.row()))->id()=="Axia")&&
(model_sample_rate!=48000)) {
flags=flags&Qt::ItemIsEnabled;
}
return flags;
}
QVariant RDAlsaModel::data(const QModelIndex &index,int role) const QVariant RDAlsaModel::data(const QModelIndex &index,int role) const
{ {
int row=index.row(); int row=index.row();

View File

@@ -36,8 +36,9 @@ class RDAlsaModel : public QAbstractListModel
{ {
Q_OBJECT; Q_OBJECT;
public: public:
RDAlsaModel(QObject *parent=0); RDAlsaModel(unsigned samprate,QObject *parent=0);
int rowCount(const QModelIndex &parent=QModelIndex()) const; int rowCount(const QModelIndex &parent=QModelIndex()) const;
Qt::ItemFlags flags(const QModelIndex &index) const;
QVariant data(const QModelIndex &index,int role=Qt::DisplayRole) const; QVariant data(const QModelIndex &index,int role=Qt::DisplayRole) const;
QVariant headerData(int section,Qt::Orientation orient, QVariant headerData(int section,Qt::Orientation orient,
int role=Qt::DisplayRole) const; int role=Qt::DisplayRole) const;
@@ -50,6 +51,7 @@ class RDAlsaModel : public QAbstractListModel
QList<RDAlsaCard *> model_alsa_cards; QList<RDAlsaCard *> model_alsa_cards;
QList<int> model_card_index; QList<int> model_card_index;
QList<int> model_pcm_index; QList<int> model_pcm_index;
unsigned model_sample_rate;
}; };