mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-06-04 06:02:40 +02:00
2019-06-10 Fred Gleason <fredg@paravelsystems.com>
* Removed the 'Channels=' directive from the '[Format]' section of rd.conf(5).
This commit is contained in:
parent
a7f6cf49cd
commit
75077f5145
@ -18753,3 +18753,6 @@
|
||||
* Fixed a bug in caed(8) that caused the 'Unload Playback' ['UP']
|
||||
command to be ignored when the 'handle' argument was greater
|
||||
than 23.
|
||||
2019-06-10 Fred Gleason <fredg@paravelsystems.com>
|
||||
* Removed the 'Channels=' directive from the '[Format]' section
|
||||
of rd.conf(5).
|
||||
|
356
cae/cae_alsa.cpp
356
cae/cae_alsa.cpp
@ -2,7 +2,7 @@
|
||||
//
|
||||
// The ALSA Driver for the Core Audio Engine component of Rivendell
|
||||
//
|
||||
// (C) Copyright 2002-2015 Fred Gleason <fredg@paravelsystems.com>
|
||||
// (C) Copyright 2002-2019 Fred Gleason <fredg@paravelsystems.com>
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License version 2 as
|
||||
@ -54,20 +54,16 @@ volatile bool alsa_eof[RD_MAX_CARDS][RD_MAX_STREAMS];
|
||||
volatile int alsa_output_pos[RD_MAX_CARDS][RD_MAX_STREAMS];
|
||||
volatile bool alsa_recording[RD_MAX_CARDS][RD_MAX_PORTS];
|
||||
volatile bool alsa_ready[RD_MAX_CARDS][RD_MAX_PORTS];
|
||||
volatile int alsa_channels;
|
||||
|
||||
|
||||
void AlsaCapture1Callback(struct alsa_format *alsa_format)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void AlsaCapture2Callback(struct alsa_format *alsa_format)
|
||||
void *AlsaCaptureCallback(void *ptr)
|
||||
{
|
||||
char alsa_buffer[RINGBUFFER_SIZE];
|
||||
int modulo;
|
||||
int16_t in_meter[RD_MAX_PORTS][2];
|
||||
struct alsa_format *alsa_format=(struct alsa_format *)ptr;
|
||||
|
||||
signal(SIGTERM,SigHandler);
|
||||
signal(SIGINT,SigHandler);
|
||||
|
||||
while(!alsa_format->exiting) {
|
||||
int s=snd_pcm_readi(alsa_format->pcm,alsa_format->card_buffer,
|
||||
@ -82,196 +78,173 @@ void AlsaCapture2Callback(struct alsa_format *alsa_format)
|
||||
}
|
||||
else {
|
||||
switch(alsa_format->format) {
|
||||
case SND_PCM_FORMAT_S16_LE:
|
||||
modulo=alsa_format->channels;
|
||||
for(unsigned i=0;i<(alsa_format->channels/2);i++) {
|
||||
if(alsa_recording[alsa_format->card][i]) {
|
||||
if(alsa_input_volume[alsa_format->card][i]!=0.0) {
|
||||
switch(alsa_input_channels[alsa_format->card][i]) {
|
||||
case 1:
|
||||
for(int k=0;k<(2*s);k++) {
|
||||
((int16_t *)alsa_buffer)[k]=
|
||||
(int16_t)(alsa_input_volume[alsa_format->card][i]*
|
||||
(double)(((int16_t *)alsa_format->
|
||||
card_buffer)
|
||||
[modulo*k+2*i]))+
|
||||
(int16_t)(alsa_input_volume[alsa_format->card][i]*
|
||||
(double)(((int16_t *)alsa_format->
|
||||
card_buffer)
|
||||
[modulo*k+2*i+1]));
|
||||
}
|
||||
alsa_record_ring[alsa_format->card][i]->
|
||||
write(alsa_buffer,s*sizeof(int16_t));
|
||||
break;
|
||||
|
||||
case 2:
|
||||
for(int k=0;k<s;k++) {
|
||||
((int16_t *)alsa_buffer)[2*k]=
|
||||
(int16_t)(alsa_input_volume[alsa_format->card][i]*
|
||||
(double)(((int16_t *)alsa_format->
|
||||
card_buffer)
|
||||
[modulo*k+2*i]));
|
||||
((int16_t *)alsa_buffer)[2*k+1]=
|
||||
(int16_t)(alsa_input_volume[alsa_format->card][i]*
|
||||
(double)(((int16_t *)alsa_format->
|
||||
card_buffer)
|
||||
[modulo*k+2*i+1]));
|
||||
}
|
||||
alsa_record_ring[alsa_format->card][i]->
|
||||
write(alsa_buffer,s*2*sizeof(int16_t));
|
||||
break;
|
||||
}
|
||||
case SND_PCM_FORMAT_S16_LE:
|
||||
modulo=alsa_format->channels;
|
||||
for(unsigned i=0;i<(alsa_format->channels/2);i++) {
|
||||
if(alsa_recording[alsa_format->card][i]) {
|
||||
if(alsa_input_volume[alsa_format->card][i]!=0.0) {
|
||||
switch(alsa_input_channels[alsa_format->card][i]) {
|
||||
case 1:
|
||||
for(int k=0;k<(2*s);k++) {
|
||||
((int16_t *)alsa_buffer)[k]=
|
||||
(int16_t)(alsa_input_volume[alsa_format->card][i]*
|
||||
(double)(((int16_t *)alsa_format->
|
||||
card_buffer)
|
||||
[modulo*k+2*i]))+
|
||||
(int16_t)(alsa_input_volume[alsa_format->card][i]*
|
||||
(double)(((int16_t *)alsa_format->
|
||||
card_buffer)
|
||||
[modulo*k+2*i+1]));
|
||||
}
|
||||
}
|
||||
}
|
||||
alsa_record_ring[alsa_format->card][i]->
|
||||
write(alsa_buffer,s*sizeof(int16_t));
|
||||
break;
|
||||
|
||||
//
|
||||
// Process Passthroughs
|
||||
//
|
||||
for(unsigned i=0;i<alsa_format->channels;i+=2) {
|
||||
for(unsigned j=0;j<2;j++) {
|
||||
case 2:
|
||||
for(int k=0;k<s;k++) {
|
||||
((int16_t *)alsa_format->passthrough_buffer)[2*k+j]=
|
||||
((int16_t *)alsa_format->
|
||||
card_buffer)[alsa_format->channels*k+i+j];
|
||||
((int16_t *)alsa_buffer)[2*k]=
|
||||
(int16_t)(alsa_input_volume[alsa_format->card][i]*
|
||||
(double)(((int16_t *)alsa_format->
|
||||
card_buffer)
|
||||
[modulo*k+2*i]));
|
||||
((int16_t *)alsa_buffer)[2*k+1]=
|
||||
(int16_t)(alsa_input_volume[alsa_format->card][i]*
|
||||
(double)(((int16_t *)alsa_format->
|
||||
card_buffer)
|
||||
[modulo*k+2*i+1]));
|
||||
}
|
||||
alsa_record_ring[alsa_format->card][i]->
|
||||
write(alsa_buffer,s*2*sizeof(int16_t));
|
||||
break;
|
||||
}
|
||||
alsa_passthrough_ring[alsa_format->card][i/2]->
|
||||
write(alsa_format->passthrough_buffer,4*s);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Process Input Meters
|
||||
//
|
||||
for(unsigned i=0;i<alsa_format->channels;i+=2) {
|
||||
for(unsigned j=0;j<2;j++) {
|
||||
in_meter[i/2][j]=0;
|
||||
//
|
||||
// Process Passthroughs
|
||||
//
|
||||
for(unsigned i=0;i<alsa_format->channels;i+=2) {
|
||||
for(unsigned j=0;j<2;j++) {
|
||||
for(int k=0;k<s;k++) {
|
||||
((int16_t *)alsa_format->passthrough_buffer)[2*k+j]=
|
||||
((int16_t *)alsa_format->
|
||||
card_buffer)[alsa_format->channels*k+i+j];
|
||||
}
|
||||
}
|
||||
alsa_passthrough_ring[alsa_format->card][i/2]->
|
||||
write(alsa_format->passthrough_buffer,4*s);
|
||||
}
|
||||
|
||||
//
|
||||
// Process Input Meters
|
||||
//
|
||||
for(unsigned i=0;i<alsa_format->channels;i+=2) {
|
||||
for(unsigned j=0;j<2;j++) {
|
||||
in_meter[i/2][j]=0;
|
||||
for(int k=0;k<s;k++) {
|
||||
if(((int16_t *)alsa_format->
|
||||
card_buffer)[alsa_format->channels*k+2*i+j]>
|
||||
in_meter[i][j]) {
|
||||
in_meter[i][j]=
|
||||
((int16_t *)alsa_format->
|
||||
card_buffer)[alsa_format->channels*k+2*i+j];
|
||||
}
|
||||
}
|
||||
alsa_input_meter[alsa_format->card][i/2][j]->
|
||||
addValue(((double)in_meter[i/2][j])/32768.0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case SND_PCM_FORMAT_S32_LE:
|
||||
modulo=alsa_format->channels*2;
|
||||
for(unsigned i=0;i<(alsa_format->channels/2);i++) {
|
||||
if(alsa_recording[alsa_format->card][i]) {
|
||||
if(alsa_input_volume[alsa_format->card][i]!=0.0) {
|
||||
switch(alsa_input_channels[alsa_format->card][i]) {
|
||||
case 1:
|
||||
for(int k=0;k<(2*s);k++) {
|
||||
((int16_t *)alsa_buffer)[k]=
|
||||
(int16_t)(alsa_input_volume[alsa_format->card][i]*
|
||||
(double)(((int16_t *)alsa_format->
|
||||
card_buffer)
|
||||
[modulo*k+4*i+1]))+
|
||||
(int16_t)(alsa_input_volume[alsa_format->card][i]*
|
||||
(double)(((int16_t *)alsa_format->
|
||||
card_buffer)
|
||||
[modulo*k+4*i+3]));
|
||||
}
|
||||
alsa_record_ring[alsa_format->card][i]->
|
||||
write(alsa_buffer,s*sizeof(int16_t));
|
||||
break;
|
||||
|
||||
case 2:
|
||||
for(int k=0;k<s;k++) {
|
||||
if(((int16_t *)alsa_format->
|
||||
card_buffer)[alsa_format->channels*k+2*i+j]>
|
||||
in_meter[i][j]) {
|
||||
in_meter[i][j]=
|
||||
((int16_t *)alsa_format->
|
||||
card_buffer)[alsa_format->channels*k+2*i+j];
|
||||
}
|
||||
((int16_t *)alsa_buffer)[2*k]=
|
||||
(int16_t)(alsa_input_volume[alsa_format->card][i]*
|
||||
(double)(((int16_t *)alsa_format->card_buffer)
|
||||
[modulo*k+4*i+1]));
|
||||
((int16_t *)alsa_buffer)[2*k+1]=
|
||||
(int16_t)(alsa_input_volume[alsa_format->card][i]*
|
||||
(double)(((int16_t *)alsa_format->card_buffer)
|
||||
[modulo*k+4*i+3]));
|
||||
}
|
||||
alsa_input_meter[alsa_format->card][i/2][j]->
|
||||
addValue(((double)in_meter[i/2][j])/32768.0);
|
||||
alsa_record_ring[alsa_format->card][i]->
|
||||
write(alsa_buffer,s*2*sizeof(int16_t));
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
case SND_PCM_FORMAT_S32_LE:
|
||||
modulo=alsa_format->channels*2;
|
||||
for(unsigned i=0;i<(alsa_format->channels/2);i++) {
|
||||
if(alsa_recording[alsa_format->card][i]) {
|
||||
if(alsa_input_volume[alsa_format->card][i]!=0.0) {
|
||||
switch(alsa_input_channels[alsa_format->card][i]) {
|
||||
case 1:
|
||||
for(int k=0;k<(2*s);k++) {
|
||||
((int16_t *)alsa_buffer)[k]=
|
||||
(int16_t)(alsa_input_volume[alsa_format->card][i]*
|
||||
(double)(((int16_t *)alsa_format->
|
||||
card_buffer)
|
||||
[modulo*k+4*i+1]))+
|
||||
(int16_t)(alsa_input_volume[alsa_format->card][i]*
|
||||
(double)(((int16_t *)alsa_format->
|
||||
card_buffer)
|
||||
[modulo*k+4*i+3]));
|
||||
}
|
||||
alsa_record_ring[alsa_format->card][i]->
|
||||
write(alsa_buffer,s*sizeof(int16_t));
|
||||
break;
|
||||
//
|
||||
// Process Passthroughs
|
||||
//
|
||||
for(unsigned i=0;i<alsa_format->channels;i+=2) {
|
||||
for(unsigned j=0;j<2;j++) {
|
||||
for(int k=0;k<s;k++) {
|
||||
((int32_t *)alsa_format->passthrough_buffer)[2*k+j]=
|
||||
((int32_t *)alsa_format->
|
||||
card_buffer)[alsa_format->channels*k+i+j];
|
||||
}
|
||||
}
|
||||
alsa_passthrough_ring[alsa_format->card][i/2]->
|
||||
write(alsa_format->passthrough_buffer,8*s);
|
||||
}
|
||||
|
||||
case 2:
|
||||
for(int k=0;k<s;k++) {
|
||||
((int16_t *)alsa_buffer)[2*k]=
|
||||
(int16_t)(alsa_input_volume[alsa_format->card][i]*
|
||||
(double)(((int16_t *)alsa_format->card_buffer)
|
||||
[modulo*k+4*i+1]));
|
||||
((int16_t *)alsa_buffer)[2*k+1]=
|
||||
(int16_t)(alsa_input_volume[alsa_format->card][i]*
|
||||
(double)(((int16_t *)alsa_format->card_buffer)
|
||||
[modulo*k+4*i+3]));
|
||||
}
|
||||
alsa_record_ring[alsa_format->card][i]->
|
||||
write(alsa_buffer,s*2*sizeof(int16_t));
|
||||
break;
|
||||
}
|
||||
}
|
||||
//
|
||||
// Process Input Meters
|
||||
//
|
||||
for(unsigned i=0;i<alsa_format->channels;i+=2) {
|
||||
for(unsigned j=0;j<2;j++) {
|
||||
in_meter[i/2][j]=0;
|
||||
for(int k=0;k<s;k++) {
|
||||
if(((int16_t *)alsa_format->
|
||||
card_buffer)[alsa_format->channels*2*k+2*i+1+2*j]>
|
||||
in_meter[i/2][j]) {
|
||||
in_meter[i/2][j]=
|
||||
((int16_t *)alsa_format->
|
||||
card_buffer)[alsa_format->channels*2*k+2*i+1+2*j];
|
||||
}
|
||||
}
|
||||
alsa_input_meter[alsa_format->card][i/2][j]->
|
||||
addValue(((double)in_meter[i/2][j])/32768.0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
//
|
||||
// Process Passthroughs
|
||||
//
|
||||
for(unsigned i=0;i<alsa_format->channels;i+=2) {
|
||||
for(unsigned j=0;j<2;j++) {
|
||||
for(int k=0;k<s;k++) {
|
||||
((int32_t *)alsa_format->passthrough_buffer)[2*k+j]=
|
||||
((int32_t *)alsa_format->
|
||||
card_buffer)[alsa_format->channels*k+i+j];
|
||||
}
|
||||
}
|
||||
alsa_passthrough_ring[alsa_format->card][i/2]->
|
||||
write(alsa_format->passthrough_buffer,8*s);
|
||||
}
|
||||
|
||||
//
|
||||
// Process Input Meters
|
||||
//
|
||||
for(unsigned i=0;i<alsa_format->channels;i+=2) {
|
||||
for(unsigned j=0;j<2;j++) {
|
||||
in_meter[i/2][j]=0;
|
||||
for(int k=0;k<s;k++) {
|
||||
if(((int16_t *)alsa_format->
|
||||
card_buffer)[alsa_format->channels*2*k+2*i+1+2*j]>
|
||||
in_meter[i/2][j]) {
|
||||
in_meter[i/2][j]=
|
||||
((int16_t *)alsa_format->
|
||||
card_buffer)[alsa_format->channels*2*k+2*i+1+2*j];
|
||||
}
|
||||
}
|
||||
alsa_input_meter[alsa_format->card][i/2][j]->
|
||||
addValue(((double)in_meter[i/2][j])/32768.0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void *AlsaCaptureCallback(void *ptr)
|
||||
{
|
||||
struct alsa_format *alsa_format=(struct alsa_format *)ptr;
|
||||
|
||||
signal(SIGTERM,SigHandler);
|
||||
signal(SIGINT,SigHandler);
|
||||
|
||||
switch(alsa_channels) {
|
||||
case 1:
|
||||
AlsaCapture1Callback(alsa_format);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
AlsaCapture2Callback(alsa_format);
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void AlsaPlay1Callback(struct alsa_format *alsa_format)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void AlsaPlay2Callback(struct alsa_format *alsa_format)
|
||||
void *AlsaPlayCallback(void *ptr)
|
||||
{
|
||||
int n=0;
|
||||
int p;
|
||||
@ -280,6 +253,11 @@ void AlsaPlay2Callback(struct alsa_format *alsa_format)
|
||||
int16_t out_meter[RD_MAX_PORTS][2];
|
||||
int16_t stream_out_meter=0;
|
||||
|
||||
struct alsa_format *alsa_format=(struct alsa_format *)ptr;
|
||||
|
||||
signal(SIGTERM,SigHandler);
|
||||
signal(SIGINT,SigHandler);
|
||||
|
||||
while(!alsa_format->exiting) {
|
||||
memset(alsa_format->card_buffer,0,alsa_format->card_buffer_size);
|
||||
|
||||
@ -549,25 +527,7 @@ void AlsaPlay2Callback(struct alsa_format *alsa_format)
|
||||
alsa_format->card));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void *AlsaPlayCallback(void *ptr)
|
||||
{
|
||||
struct alsa_format *alsa_format=(struct alsa_format *)ptr;
|
||||
|
||||
signal(SIGTERM,SigHandler);
|
||||
signal(SIGINT,SigHandler);
|
||||
|
||||
switch(alsa_channels) {
|
||||
case 1:
|
||||
AlsaPlay1Callback(alsa_format);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
AlsaPlay2Callback(alsa_format);
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -692,7 +652,7 @@ void MainObject::alsaInit(RDStation *station)
|
||||
}
|
||||
}
|
||||
}
|
||||
alsa_channels=rd_config->channels();
|
||||
// alsa_channels=rd_config->channels();
|
||||
|
||||
//
|
||||
// Stop & Fade Timers
|
||||
@ -779,9 +739,9 @@ void MainObject::alsaInit(RDStation *station)
|
||||
}
|
||||
station->
|
||||
setCardInputs(i,
|
||||
alsa_capture_format[i].channels/rd_config->channels());
|
||||
alsa_capture_format[i].channels/RD_DEFAULT_CHANNELS);
|
||||
station->
|
||||
setCardOutputs(i,alsa_play_format[i].channels/rd_config->channels());
|
||||
setCardOutputs(i,alsa_play_format[i].channels/RD_DEFAULT_CHANNELS);
|
||||
}
|
||||
else {
|
||||
i--;
|
||||
@ -1468,7 +1428,7 @@ bool MainObject::AlsaStartCaptureDevice(QString &dev,int card,snd_pcm_t *pcm)
|
||||
// Channels
|
||||
//
|
||||
if(rd_config->alsaChannelsPerPcm()<0) {
|
||||
alsa_capture_format[card].channels=rd_config->channels()*RD_MAX_PORTS;
|
||||
alsa_capture_format[card].channels=RD_DEFAULT_CHANNELS*RD_MAX_PORTS;
|
||||
}
|
||||
else {
|
||||
alsa_capture_format[card].channels=rd_config->alsaChannelsPerPcm();
|
||||
@ -1625,7 +1585,7 @@ bool MainObject::AlsaStartPlayDevice(QString &dev,int card,snd_pcm_t *pcm)
|
||||
// Channels
|
||||
//
|
||||
if(rd_config->alsaChannelsPerPcm()<0) {
|
||||
alsa_play_format[card].channels=rd_config->channels()*RD_MAX_PORTS;
|
||||
alsa_play_format[card].channels=RD_DEFAULT_CHANNELS*RD_MAX_PORTS;
|
||||
}
|
||||
else {
|
||||
alsa_play_format[card].channels=rd_config->alsaChannelsPerPcm();
|
||||
|
@ -145,11 +145,6 @@ RealtimePriority=9
|
||||
; when transcoding files.
|
||||
TranscodingDelay=0
|
||||
|
||||
[Format]
|
||||
; This value is used when testing and developing new features in the
|
||||
; audio drivers. It should never be altered on a production system.
|
||||
Channels=2
|
||||
|
||||
[Hacks]
|
||||
; If you are getting no output level meter indications with an older
|
||||
; ASI card (such as the ASI4215, ASI4113 or ASI4111), try uncommenting
|
||||
|
@ -2,7 +2,7 @@
|
||||
//
|
||||
// A container class for a Rivendell Base Configuration
|
||||
//
|
||||
// (C) Copyright 2002-2018 Fred Gleason <fredg@paravelsystems.com>
|
||||
// (C) Copyright 2002-2019 Fred Gleason <fredg@paravelsystems.com>
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License version 2 as
|
||||
@ -452,12 +452,6 @@ bool RDConfig::lockRdairplayMemory() const
|
||||
}
|
||||
|
||||
|
||||
unsigned RDConfig::channels() const
|
||||
{
|
||||
return conf_channels;
|
||||
}
|
||||
|
||||
|
||||
uid_t RDConfig::uid() const
|
||||
{
|
||||
return conf_uid;
|
||||
@ -675,7 +669,6 @@ bool RDConfig::load()
|
||||
profile->boolValue("Hacks","DisableMaintChecks",false);
|
||||
conf_lock_rdairplay_memory=
|
||||
profile->boolValue("Hacks","LockRdairplayMemory",false);
|
||||
conf_channels=profile->intValue("Format","Channels",RD_DEFAULT_CHANNELS);
|
||||
if((user=getpwnam(profile->stringValue("Identity","AudioOwner")))!=NULL) {
|
||||
conf_uid=user->pw_uid;
|
||||
}
|
||||
@ -799,7 +792,6 @@ void RDConfig::clear()
|
||||
conf_use_stream_meters=false;
|
||||
conf_disable_maint_checks=false;
|
||||
conf_lock_rdairplay_memory=false;
|
||||
conf_channels=RD_DEFAULT_CHANNELS;
|
||||
conf_uid=65535;
|
||||
conf_gid=65535;
|
||||
conf_pypad_uid=65535;
|
||||
|
@ -2,7 +2,7 @@
|
||||
//
|
||||
// A container class for a Rivendell Base Configuration
|
||||
//
|
||||
// (C) Copyright 2002-2018 Fred Gleason <fredg@paravelsystems.com>
|
||||
// (C) Copyright 2002-2019 Fred Gleason <fredg@paravelsystems.com>
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License version 2 as
|
||||
@ -114,7 +114,6 @@ class RDConfig
|
||||
bool lockRdairplayMemory() const;
|
||||
QString caeLogfile() const;
|
||||
bool enableMixerLogging() const;
|
||||
unsigned channels() const;
|
||||
uid_t uid() const;
|
||||
gid_t gid() const;
|
||||
uid_t pypadUid() const;
|
||||
@ -187,7 +186,6 @@ class RDConfig
|
||||
bool conf_disable_maint_checks;
|
||||
bool conf_lock_rdairplay_memory;
|
||||
std::vector<QString> conf_jack_ports[2];
|
||||
unsigned conf_channels;
|
||||
uid_t conf_uid;
|
||||
gid_t conf_gid;
|
||||
uid_t conf_pypad_uid;
|
||||
|
Loading…
x
Reference in New Issue
Block a user