mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-05-24 08:31:41 +02:00
2018-06-11 Fred Gleason <fredg@paravelsystems.com>
* Added a 'STATIONS.JACK_PORT' field to the database. * Incremented the database version to 287. * Added an 'Initial Audio Ports' control to the 'JACK Configuration' dialog in rdadmin(1). * Implemented 'Activate JACK Port' ['JA'] and 'Remove JACK Port' ['JR'] RMLs.
This commit is contained in:
parent
bcf29e8de3
commit
96fdfff8a0
@ -17040,3 +17040,10 @@
|
|||||||
reversion to an implied schema.
|
reversion to an implied schema.
|
||||||
2018-06-08 Fred Gleason <fredg@paravelsystems.com>
|
2018-06-08 Fred Gleason <fredg@paravelsystems.com>
|
||||||
* Fixed typos in the rddbmgr(8) man page.
|
* Fixed typos in the rddbmgr(8) man page.
|
||||||
|
2018-06-11 Fred Gleason <fredg@paravelsystems.com>
|
||||||
|
* Added a 'STATIONS.JACK_PORT' field to the database.
|
||||||
|
* Incremented the database version to 287.
|
||||||
|
* Added an 'Initial Audio Ports' control to the 'JACK Configuration'
|
||||||
|
dialog in rdadmin(1).
|
||||||
|
* Implemented 'Activate JACK Port' ['JA'] and 'Remove JACK Port' ['JR']
|
||||||
|
RMLs.
|
||||||
|
300
cae/cae_jack.cpp
300
cae/cae_jack.cpp
@ -41,8 +41,6 @@ jack_client_t *jack_client;
|
|||||||
RDMeterAverage *jack_input_meter[RD_MAX_PORTS][2];
|
RDMeterAverage *jack_input_meter[RD_MAX_PORTS][2];
|
||||||
RDMeterAverage *jack_output_meter[RD_MAX_PORTS][2];
|
RDMeterAverage *jack_output_meter[RD_MAX_PORTS][2];
|
||||||
RDMeterAverage *jack_stream_output_meter[RD_MAX_STREAMS][2];
|
RDMeterAverage *jack_stream_output_meter[RD_MAX_STREAMS][2];
|
||||||
//volatile jack_default_audio_sample_t jack_input_meter[RD_MAX_PORTS][2];
|
|
||||||
//volatile jack_default_audio_sample_t jack_output_meter[RD_MAX_PORTS][2];
|
|
||||||
volatile jack_default_audio_sample_t
|
volatile jack_default_audio_sample_t
|
||||||
jack_input_volume[RD_MAX_PORTS];
|
jack_input_volume[RD_MAX_PORTS];
|
||||||
volatile jack_default_audio_sample_t
|
volatile jack_default_audio_sample_t
|
||||||
@ -87,10 +85,14 @@ int JackProcess(jack_nframes_t nframes, void *arg)
|
|||||||
//
|
//
|
||||||
for(int i=0;i<RD_MAX_PORTS;i++) {
|
for(int i=0;i<RD_MAX_PORTS;i++) {
|
||||||
for(int j=0;j<2;j++) {
|
for(int j=0;j<2;j++) {
|
||||||
jack_input_buffer[i][j]=(jack_default_audio_sample_t *)
|
if(jack_input_port[i][j]!=NULL) {
|
||||||
jack_port_get_buffer(jack_input_port[i][j],nframes);
|
jack_input_buffer[i][j]=(jack_default_audio_sample_t *)
|
||||||
jack_output_buffer[i][j]=(jack_default_audio_sample_t *)
|
jack_port_get_buffer(jack_input_port[i][j],nframes);
|
||||||
jack_port_get_buffer(jack_output_port[i][j],nframes);
|
}
|
||||||
|
if(jack_output_port[i][j]!=NULL) {
|
||||||
|
jack_output_buffer[i][j]=(jack_default_audio_sample_t *)
|
||||||
|
jack_port_get_buffer(jack_output_port[i][j],nframes);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -99,8 +101,10 @@ int JackProcess(jack_nframes_t nframes, void *arg)
|
|||||||
//
|
//
|
||||||
for(int i=0;i<RD_MAX_PORTS;i++) {
|
for(int i=0;i<RD_MAX_PORTS;i++) {
|
||||||
for(int j=0;j<2;j++) {
|
for(int j=0;j<2;j++) {
|
||||||
for(unsigned k=0;k<nframes;k++) {
|
if(jack_output_port[i][j]!=NULL) {
|
||||||
jack_output_buffer[i][j][k]=0.0;
|
for(unsigned k=0;k<nframes;k++) {
|
||||||
|
jack_output_buffer[i][j][k]=0.0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -112,9 +116,11 @@ int JackProcess(jack_nframes_t nframes, void *arg)
|
|||||||
for(int j=0;j<RD_MAX_PORTS;j++) {
|
for(int j=0;j<RD_MAX_PORTS;j++) {
|
||||||
if(jack_passthrough_volume[i][j]>0.0) {
|
if(jack_passthrough_volume[i][j]>0.0) {
|
||||||
for(int k=0;k<2;k++) {
|
for(int k=0;k<2;k++) {
|
||||||
for(unsigned l=0;l<nframes;l++) {
|
if((jack_output_port[j][k]!=NULL)&&(jack_input_port[i][k]!=NULL)) {
|
||||||
jack_output_buffer[j][k][l]+=
|
for(unsigned l=0;l<nframes;l++) {
|
||||||
jack_input_buffer[i][k][l]*jack_passthrough_volume[i][j];
|
jack_output_buffer[j][k][l]+=
|
||||||
|
jack_input_buffer[i][k][l]*jack_passthrough_volume[i][j];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -125,68 +131,70 @@ int JackProcess(jack_nframes_t nframes, void *arg)
|
|||||||
// Process Input Streams
|
// Process Input Streams
|
||||||
//
|
//
|
||||||
for(int i=0;i<RD_MAX_PORTS;i++) {
|
for(int i=0;i<RD_MAX_PORTS;i++) {
|
||||||
if(jack_recording[i]) {
|
if(jack_input_port[i][0]!=NULL) {
|
||||||
switch(jack_input_channels[i]) {
|
if(jack_recording[i]) {
|
||||||
case 1: // mono
|
switch(jack_input_channels[i]) {
|
||||||
for(unsigned j=0;j<nframes;j++) {
|
case 1: // mono
|
||||||
switch(jack_input_mode[jack_card_process][i]) {
|
for(unsigned j=0;j<nframes;j++) {
|
||||||
case 3: // R only
|
switch(jack_input_mode[jack_card_process][i]) {
|
||||||
jack_callback_buffer[j]=jack_input_volume[i]*
|
case 3: // R only
|
||||||
jack_input_buffer[i][1][j];
|
jack_callback_buffer[j]=jack_input_volume[i]*
|
||||||
break;
|
jack_input_buffer[i][1][j];
|
||||||
case 2: // L only
|
break;
|
||||||
jack_callback_buffer[j]=jack_input_volume[i]*
|
case 2: // L only
|
||||||
jack_input_buffer[i][0][j];
|
jack_callback_buffer[j]=jack_input_volume[i]*
|
||||||
break;
|
jack_input_buffer[i][0][j];
|
||||||
case 1: // swap, sum R+L
|
break;
|
||||||
case 0: // normal, sum L+R
|
case 1: // swap, sum R+L
|
||||||
default:
|
case 0: // normal, sum L+R
|
||||||
jack_callback_buffer[j]=jack_input_volume[i]*
|
default:
|
||||||
(jack_input_buffer[i][0][j]+jack_input_buffer[i][1][j]);
|
jack_callback_buffer[j]=jack_input_volume[i]*
|
||||||
break;
|
(jack_input_buffer[i][0][j]+jack_input_buffer[i][1][j]);
|
||||||
}
|
break;
|
||||||
} // for nframes
|
}
|
||||||
n=jack_record_ring[i]->
|
} // for nframes
|
||||||
write((char *)jack_callback_buffer,
|
n=jack_record_ring[i]->
|
||||||
nframes*sizeof(jack_default_audio_sample_t))/
|
write((char *)jack_callback_buffer,
|
||||||
sizeof(jack_default_audio_sample_t);
|
nframes*sizeof(jack_default_audio_sample_t))/
|
||||||
break;
|
sizeof(jack_default_audio_sample_t);
|
||||||
|
break;
|
||||||
|
|
||||||
case 2: // stereo
|
case 2: // stereo
|
||||||
for(unsigned j=0;j<nframes;j++) {
|
for(unsigned j=0;j<nframes;j++) {
|
||||||
switch(jack_input_mode[jack_card_process][i]) {
|
switch(jack_input_mode[jack_card_process][i]) {
|
||||||
case 3: // R only
|
case 3: // R only
|
||||||
memset(&jack_callback_buffer[2*j],0,
|
memset(&jack_callback_buffer[2*j],0,
|
||||||
sizeof(jack_input_buffer[i][0][j]));
|
sizeof(jack_input_buffer[i][0][j]));
|
||||||
jack_callback_buffer[2*j+1]=jack_input_volume[i]*
|
jack_callback_buffer[2*j+1]=jack_input_volume[i]*
|
||||||
jack_input_buffer[i][1][j];
|
jack_input_buffer[i][1][j];
|
||||||
break;
|
break;
|
||||||
case 2: // L only
|
case 2: // L only
|
||||||
jack_callback_buffer[2*j]=jack_input_volume[i]*
|
jack_callback_buffer[2*j]=jack_input_volume[i]*
|
||||||
jack_input_buffer[i][0][j];
|
jack_input_buffer[i][0][j];
|
||||||
memset(&jack_callback_buffer[2*j+1],0,
|
memset(&jack_callback_buffer[2*j+1],0,
|
||||||
sizeof(jack_input_buffer[i][1][j]));
|
sizeof(jack_input_buffer[i][1][j]));
|
||||||
break;
|
break;
|
||||||
case 1: // swap
|
case 1: // swap
|
||||||
jack_callback_buffer[2*j]=jack_input_volume[i]*
|
jack_callback_buffer[2*j]=jack_input_volume[i]*
|
||||||
jack_input_buffer[i][1][j];
|
jack_input_buffer[i][1][j];
|
||||||
jack_callback_buffer[2*j+1]=jack_input_volume[i]*
|
jack_callback_buffer[2*j+1]=jack_input_volume[i]*
|
||||||
jack_input_buffer[i][0][j];
|
jack_input_buffer[i][0][j];
|
||||||
break;
|
break;
|
||||||
case 0: // normal
|
case 0: // normal
|
||||||
default:
|
default:
|
||||||
jack_callback_buffer[2*j]=jack_input_volume[i]*
|
jack_callback_buffer[2*j]=jack_input_volume[i]*
|
||||||
jack_input_buffer[i][0][j];
|
jack_input_buffer[i][0][j];
|
||||||
jack_callback_buffer[2*j+1]=jack_input_volume[i]*
|
jack_callback_buffer[2*j+1]=jack_input_volume[i]*
|
||||||
jack_input_buffer[i][1][j];
|
jack_input_buffer[i][1][j];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} // for nframes
|
} // for nframes
|
||||||
n=jack_record_ring[i]->
|
n=jack_record_ring[i]->
|
||||||
write((char *)jack_callback_buffer,
|
write((char *)jack_callback_buffer,
|
||||||
2*nframes*sizeof(jack_default_audio_sample_t))/
|
2*nframes*sizeof(jack_default_audio_sample_t))/
|
||||||
(2*sizeof(jack_default_audio_sample_t));
|
(2*sizeof(jack_default_audio_sample_t));
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -229,37 +237,39 @@ int JackProcess(jack_nframes_t nframes, void *arg)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
for(int j=0;j<RD_MAX_PORTS;j++) {
|
for(int j=0;j<RD_MAX_PORTS;j++) {
|
||||||
if(jack_output_volume[j][i]>0.0) {
|
if(jack_output_port[j][0]!=NULL) {
|
||||||
switch(jack_output_channels[i]) {
|
if(jack_output_volume[j][i]>0.0) {
|
||||||
case 1:
|
switch(jack_output_channels[i]) {
|
||||||
for(unsigned k=0;k<n;k++) {
|
case 1:
|
||||||
jack_output_buffer[j][0][k]=
|
for(unsigned k=0;k<n;k++) {
|
||||||
jack_output_buffer[j][0][k]+jack_output_volume[j][i]*
|
jack_output_buffer[j][0][k]=
|
||||||
jack_callback_buffer[k];
|
jack_output_buffer[j][0][k]+jack_output_volume[j][i]*
|
||||||
jack_output_buffer[j][1][k]=
|
jack_callback_buffer[k];
|
||||||
jack_output_buffer[j][1][k]+jack_output_volume[j][i]*
|
jack_output_buffer[j][1][k]=
|
||||||
jack_callback_buffer[k];
|
jack_output_buffer[j][1][k]+jack_output_volume[j][i]*
|
||||||
}
|
jack_callback_buffer[k];
|
||||||
if(n!=nframes && jack_eof[i]) {
|
}
|
||||||
jack_stopping[i]=true;
|
if(n!=nframes && jack_eof[i]) {
|
||||||
jack_playing[i]=false;
|
jack_stopping[i]=true;
|
||||||
}
|
jack_playing[i]=false;
|
||||||
break;
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
for(unsigned k=0;k<n;k++) {
|
for(unsigned k=0;k<n;k++) {
|
||||||
jack_output_buffer[j][0][k]=
|
jack_output_buffer[j][0][k]=
|
||||||
jack_output_buffer[j][0][k]+jack_output_volume[j][i]*
|
jack_output_buffer[j][0][k]+jack_output_volume[j][i]*
|
||||||
jack_callback_buffer[k*2];
|
jack_callback_buffer[k*2];
|
||||||
jack_output_buffer[j][1][k]=
|
jack_output_buffer[j][1][k]=
|
||||||
jack_output_buffer[j][1][k]+jack_output_volume[j][i]*
|
jack_output_buffer[j][1][k]+jack_output_volume[j][i]*
|
||||||
jack_callback_buffer[k*2+1];
|
jack_callback_buffer[k*2+1];
|
||||||
|
}
|
||||||
|
if(n!=nframes && jack_eof[i]) {
|
||||||
|
jack_stopping[i]=true;
|
||||||
|
jack_playing[i]=false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if(n!=nframes && jack_eof[i]) {
|
|
||||||
jack_stopping[i]=true;
|
|
||||||
jack_playing[i]=false;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -272,47 +282,49 @@ int JackProcess(jack_nframes_t nframes, void *arg)
|
|||||||
// Process Meters
|
// Process Meters
|
||||||
//
|
//
|
||||||
for(int i=0;i<RD_MAX_PORTS;i++) {
|
for(int i=0;i<RD_MAX_PORTS;i++) {
|
||||||
// input meters (taking input mode into account)
|
if(jack_input_port[i][0]!=NULL) {
|
||||||
in_meter[0]=0.0;
|
// input meters (taking input mode into account)
|
||||||
in_meter[1]=0.0;
|
in_meter[0]=0.0;
|
||||||
for(unsigned k=0;k<nframes;k++) {
|
in_meter[1]=0.0;
|
||||||
switch(jack_input_mode[jack_card_process][i]) {
|
|
||||||
case 3: // R only
|
|
||||||
if(jack_input_buffer[i][1][k]>in_meter[1])
|
|
||||||
in_meter[1]=jack_input_buffer[i][1][k];
|
|
||||||
break;
|
|
||||||
case 2: // L only
|
|
||||||
if(jack_input_buffer[i][0][k]>in_meter[0])
|
|
||||||
in_meter[0]=jack_input_buffer[i][0][k];
|
|
||||||
break;
|
|
||||||
case 1: // swap
|
|
||||||
if(jack_input_buffer[i][0][k]>in_meter[1])
|
|
||||||
in_meter[1]=jack_input_buffer[i][0][k];
|
|
||||||
if(jack_input_buffer[i][1][k]>in_meter[0])
|
|
||||||
in_meter[0]=jack_input_buffer[i][1][k];
|
|
||||||
break;
|
|
||||||
case 0: // normal
|
|
||||||
default:
|
|
||||||
if(jack_input_buffer[i][0][k]>in_meter[0])
|
|
||||||
in_meter[0]=jack_input_buffer[i][0][k];
|
|
||||||
if(jack_input_buffer[i][1][k]>in_meter[1])
|
|
||||||
in_meter[1]=jack_input_buffer[i][1][k];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} // for nframes
|
|
||||||
jack_input_meter[i][0]->addValue(in_meter[0]);
|
|
||||||
jack_input_meter[i][1]->addValue(in_meter[1]);
|
|
||||||
|
|
||||||
// output meters
|
|
||||||
for(int j=0;j<2;j++) {
|
|
||||||
out_meter[j]=0.0;
|
|
||||||
for(unsigned k=0;k<nframes;k++) {
|
for(unsigned k=0;k<nframes;k++) {
|
||||||
if(jack_output_buffer[i][j][k]>out_meter[j])
|
switch(jack_input_mode[jack_card_process][i]) {
|
||||||
out_meter[j]=jack_output_buffer[i][j][k];
|
case 3: // R only
|
||||||
}
|
if(jack_input_buffer[i][1][k]>in_meter[1])
|
||||||
jack_output_meter[i][j]->addValue(out_meter[j]);
|
in_meter[1]=jack_input_buffer[i][1][k];
|
||||||
|
break;
|
||||||
|
case 2: // L only
|
||||||
|
if(jack_input_buffer[i][0][k]>in_meter[0])
|
||||||
|
in_meter[0]=jack_input_buffer[i][0][k];
|
||||||
|
break;
|
||||||
|
case 1: // swap
|
||||||
|
if(jack_input_buffer[i][0][k]>in_meter[1])
|
||||||
|
in_meter[1]=jack_input_buffer[i][0][k];
|
||||||
|
if(jack_input_buffer[i][1][k]>in_meter[0])
|
||||||
|
in_meter[0]=jack_input_buffer[i][1][k];
|
||||||
|
break;
|
||||||
|
case 0: // normal
|
||||||
|
default:
|
||||||
|
if(jack_input_buffer[i][0][k]>in_meter[0])
|
||||||
|
in_meter[0]=jack_input_buffer[i][0][k];
|
||||||
|
if(jack_input_buffer[i][1][k]>in_meter[1])
|
||||||
|
in_meter[1]=jack_input_buffer[i][1][k];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} // for nframes
|
||||||
|
jack_input_meter[i][0]->addValue(in_meter[0]);
|
||||||
|
jack_input_meter[i][1]->addValue(in_meter[1]);
|
||||||
|
}
|
||||||
|
if(jack_output_port[i][0]!=NULL) {
|
||||||
|
// output meters
|
||||||
|
for(int j=0;j<2;j++) {
|
||||||
|
out_meter[j]=0.0;
|
||||||
|
for(unsigned k=0;k<nframes;k++) {
|
||||||
|
if(jack_output_buffer[i][j][k]>out_meter[j])
|
||||||
|
out_meter[j]=jack_output_buffer[i][j][k];
|
||||||
|
}
|
||||||
|
jack_output_meter[i][j]->addValue(out_meter[j]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} // for RD_MAX_PORTS
|
} // for RD_MAX_PORTS
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -416,6 +428,7 @@ void MainObject::jackRecordTimerData(int stream)
|
|||||||
|
|
||||||
void MainObject::jackClientStartData()
|
void MainObject::jackClientStartData()
|
||||||
{
|
{
|
||||||
|
#ifdef JACK
|
||||||
QString sql=QString("select DESCRIPTION,COMMAND_LINE from JACK_CLIENTS where ")+
|
QString sql=QString("select DESCRIPTION,COMMAND_LINE from JACK_CLIENTS where ")+
|
||||||
"STATION_NAME=\""+RDEscapeString(rd_config->stationName())+"\"";
|
"STATION_NAME=\""+RDEscapeString(rd_config->stationName())+"\"";
|
||||||
RDSqlQuery *q=new RDSqlQuery(sql);
|
RDSqlQuery *q=new RDSqlQuery(sql);
|
||||||
@ -434,6 +447,7 @@ void MainObject::jackClientStartData()
|
|||||||
sleep(1);
|
sleep(1);
|
||||||
}
|
}
|
||||||
delete q;
|
delete q;
|
||||||
|
#endif // JACK
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -629,6 +643,12 @@ void MainObject::jackInit(RDStation *station)
|
|||||||
// Register Ports
|
// Register Ports
|
||||||
//
|
//
|
||||||
for(int i=0;i<RD_MAX_PORTS;i++) {
|
for(int i=0;i<RD_MAX_PORTS;i++) {
|
||||||
|
for(int j=0;j<2;j++) {
|
||||||
|
jack_output_port[i][j]=NULL;
|
||||||
|
jack_input_port[i][j]=NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(int i=0;i<station->jackPorts();i++) {
|
||||||
name=QString().sprintf("playout_%dL",i);
|
name=QString().sprintf("playout_%dL",i);
|
||||||
jack_output_port[i][0]=
|
jack_output_port[i][0]=
|
||||||
jack_port_register(jack_client,(const char *)name,
|
jack_port_register(jack_client,(const char *)name,
|
||||||
|
@ -1385,6 +1385,31 @@
|
|||||||
|
|
||||||
<sect1>
|
<sect1>
|
||||||
<title>JACK Operations</title>
|
<title>JACK Operations</title>
|
||||||
|
<sect2>
|
||||||
|
<title><command>Activate Port</command></title>
|
||||||
|
<para>
|
||||||
|
Add a complementary pair of JACK ports (input and output) to the
|
||||||
|
JACK graph, at the port position indicated by
|
||||||
|
<replaceable>port</replaceable>. If the ports are already active, do
|
||||||
|
nothing.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
<userinput>JA <replaceable>num</replaceable>!</userinput>
|
||||||
|
</para>
|
||||||
|
<variablelist>
|
||||||
|
<varlistentry>
|
||||||
|
<term>
|
||||||
|
<replaceable>num</replaceable>
|
||||||
|
</term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
The port position to which to associate the added port.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
</variablelist>
|
||||||
|
</sect2>
|
||||||
|
|
||||||
<sect2>
|
<sect2>
|
||||||
<title><command>Connect Ports</command></title>
|
<title><command>Connect Ports</command></title>
|
||||||
<para>
|
<para>
|
||||||
@ -1452,6 +1477,31 @@
|
|||||||
</varlistentry>
|
</varlistentry>
|
||||||
</variablelist>
|
</variablelist>
|
||||||
</sect2>
|
</sect2>
|
||||||
|
|
||||||
|
<sect2>
|
||||||
|
<title><command>Remove Port</command></title>
|
||||||
|
<para>
|
||||||
|
Remove a complementary pair of JACK ports (input and output) from the
|
||||||
|
JACK graph, at the port position indicated by
|
||||||
|
<replaceable>port</replaceable>. If the ports are not active, do
|
||||||
|
nothing.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
<userinput>JR <replaceable>num</replaceable>!</userinput>
|
||||||
|
</para>
|
||||||
|
<variablelist>
|
||||||
|
<varlistentry>
|
||||||
|
<term>
|
||||||
|
<replaceable>num</replaceable>
|
||||||
|
</term>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
The port position to which to associate the added port.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
|
</variablelist>
|
||||||
|
</sect2>
|
||||||
</sect1>
|
</sect1>
|
||||||
|
|
||||||
<sect1>
|
<sect1>
|
||||||
|
@ -171,6 +171,36 @@
|
|||||||
|
|
||||||
<sect1 xml:id="sect.rml.commands">
|
<sect1 xml:id="sect.rml.commands">
|
||||||
<title>Commands</title>
|
<title>Commands</title>
|
||||||
|
<sect2 xml:id="sect.rml.activate_jack_port__ja_">
|
||||||
|
<title>Activate Jack Port [JA]</title>
|
||||||
|
<para>
|
||||||
|
<variablelist>
|
||||||
|
<varlistentry>
|
||||||
|
<term>Module</term>
|
||||||
|
<listitem><command>caed</command><manvolnum>8</manvolnum></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term>Mnemonic</term>
|
||||||
|
<listitem><userinput>JA</userinput></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
</variablelist>
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
Activate an audio port to the JACK processing graph.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
<userinput>JA</userinput>
|
||||||
|
<replaceable>num</replaceable>!
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
Activate port <replaceable>num</replaceable> in the JACK graph, causing
|
||||||
|
new playout and captures ports corresponding to
|
||||||
|
<replaceable>num</replaceable> to be added to the JACK graph.
|
||||||
|
<replaceable>num</replaceable> must be an integer between
|
||||||
|
<userinput>1</userinput> and <userinput>24</userinput> inclusive.
|
||||||
|
</para>
|
||||||
|
</sect2>
|
||||||
|
|
||||||
<sect2 xml:id="sect.rml.air_gate__ag_">
|
<sect2 xml:id="sect.rml.air_gate__ag_">
|
||||||
<title>Air Gate [AG]</title>
|
<title>Air Gate [AG]</title>
|
||||||
<para>
|
<para>
|
||||||
@ -1359,6 +1389,36 @@
|
|||||||
</para>
|
</para>
|
||||||
</sect2>
|
</sect2>
|
||||||
|
|
||||||
|
<sect2 xml:id="sect.rml.remove_jack_port__jr_">
|
||||||
|
<title>Remove Jack Port [JR]</title>
|
||||||
|
<para>
|
||||||
|
<variablelist>
|
||||||
|
<varlistentry>
|
||||||
|
<term>Module</term>
|
||||||
|
<listitem><command>caed</command><manvolnum>8</manvolnum></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
<varlistentry>
|
||||||
|
<term>Mnemonic</term>
|
||||||
|
<listitem><userinput>JR</userinput></listitem>
|
||||||
|
</varlistentry>
|
||||||
|
</variablelist>
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
Remove an audio port from the JACK processing graph.
|
||||||
|
<replaceable>num</replaceable> must be an integer between
|
||||||
|
<userinput>1</userinput> and <userinput>24</userinput> inclusive.
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
<userinput>JR</userinput>
|
||||||
|
<replaceable>num</replaceable>!
|
||||||
|
</para>
|
||||||
|
<para>
|
||||||
|
Deactivate port <replaceable>num</replaceable> in the JACK graph, causing
|
||||||
|
new playout and captures ports corresponding to
|
||||||
|
<replaceable>num</replaceable> to be removed from the JACK graph.
|
||||||
|
</para>
|
||||||
|
</sect2>
|
||||||
|
|
||||||
<sect2 xml:id="sect.rml.run_shell_command__rn_">
|
<sect2 xml:id="sect.rml.run_shell_command__rn_">
|
||||||
<title>Run Shell Command [RN]</title>
|
<title>Run Shell Command [RN]</title>
|
||||||
<para>
|
<para>
|
||||||
|
@ -25,6 +25,7 @@ FILTER_MODE int(11) 0=Synchronous, 1=Asynchronous
|
|||||||
START_JACK enum('Y','N')
|
START_JACK enum('Y','N')
|
||||||
JACK_SERVER_NAME char(64)
|
JACK_SERVER_NAME char(64)
|
||||||
JACK_COMMAND_LINE char(255)
|
JACK_COMMAND_LINE char(255)
|
||||||
|
JACK_PORTS int(11) signed
|
||||||
CUE_CARD int(11) signed
|
CUE_CARD int(11) signed
|
||||||
CUE_PORT int(11) signed
|
CUE_PORT int(11) signed
|
||||||
CUE_START_CART int(10) unsigned
|
CUE_START_CART int(10) unsigned
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
/*
|
/*
|
||||||
* Current Database Version
|
* Current Database Version
|
||||||
*/
|
*/
|
||||||
#define RD_VERSION_DATABASE 286
|
#define RD_VERSION_DATABASE 287
|
||||||
|
|
||||||
|
|
||||||
#endif // DBVERSION_H
|
#endif // DBVERSION_H
|
||||||
|
@ -178,8 +178,10 @@ bool RDMacro::parseString(const char *str,int n)
|
|||||||
case RDMacro::GE:
|
case RDMacro::GE:
|
||||||
case RDMacro::GI:
|
case RDMacro::GI:
|
||||||
case RDMacro::GO:
|
case RDMacro::GO:
|
||||||
|
case RDMacro::JA:
|
||||||
case RDMacro::JC:
|
case RDMacro::JC:
|
||||||
case RDMacro::JD:
|
case RDMacro::JD:
|
||||||
|
case RDMacro::JR:
|
||||||
case RDMacro::LB:
|
case RDMacro::LB:
|
||||||
case RDMacro::LC:
|
case RDMacro::LC:
|
||||||
case RDMacro::LL:
|
case RDMacro::LL:
|
||||||
|
@ -37,15 +37,15 @@ class RDMacro
|
|||||||
public:
|
public:
|
||||||
enum Command {AG=0x4147,AL=0x414C,BO=0x424F,CC=0x4343,CE=0x4345,CL=0x434C,
|
enum Command {AG=0x4147,AL=0x414C,BO=0x424F,CC=0x4343,CE=0x4345,CL=0x434C,
|
||||||
CP=0x4350,DB=0x4442,DL=0x444C,DP=0x4450,DS=0x4453,DX=0x4458,
|
CP=0x4350,DB=0x4442,DL=0x444C,DP=0x4450,DS=0x4453,DX=0x4458,
|
||||||
EX=0x4558,FS=0x4653,GE=0x4745,GI=0x4749,GO=0x474F,JC=0x4A43,
|
EX=0x4558,FS=0x4653,GE=0x4745,GI=0x4749,GO=0x474F,JA=0x4A41,
|
||||||
JD=0x4A44,LB=0x4C42,LC=0x4C43,LL=0x4C4C,LO=0x4C4F,MB=0x4D42,
|
JC=0x4A43,JD=0x4A44,JR=0x4A52,LB=0x4C42,LC=0x4C43,LL=0x4C4C,
|
||||||
MD=0x4D44,MN=0x4D4E,MT=0x4D54,NN=0x4E4E,PB=0x5042,PC=0x5043,
|
LO=0x4C4F,MB=0x4D42,MD=0x4D44,MN=0x4D4E,MT=0x4D54,NN=0x4E4E,
|
||||||
PD=0x5044,PE=0x5045,PL=0x504C,PM=0x504D,PN=0x504E,PP=0x5050,
|
PB=0x5042,PC=0x5043,PD=0x5044,PE=0x5045,PL=0x504C,PM=0x504D,
|
||||||
PS=0x5053,PT=0x5054,PU=0x5055,PW=0x5057,PX=0x5058,RL=0x524C,
|
PN=0x504E,PP=0x5050,PS=0x5053,PT=0x5054,PU=0x5055,PW=0x5057,
|
||||||
RN=0x524E,RS=0x5253,RR=0x5252,SA=0x5341,SC=0x5343,SD=0x5344,
|
PX=0x5058,RL=0x524C,RN=0x524E,RS=0x5253,RR=0x5252,SA=0x5341,
|
||||||
SG=0x5347,SI=0x5349,SL=0x534C,SN=0x534e,SO=0x534F,SP=0x5350,
|
SC=0x5343,SD=0x5344,SG=0x5347,SI=0x5349,SL=0x534C,SN=0x534e,
|
||||||
SR=0x5352,ST=0x5354,SX=0x5358,SY=0x5359,SZ=0x535A,TA=0x5441,
|
SO=0x534F,SP=0x5350,SR=0x5352,ST=0x5354,SX=0x5358,SY=0x5359,
|
||||||
UO=0x554F};
|
SZ=0x535A,TA=0x5441,UO=0x554F};
|
||||||
enum Role {Invalid=0,Cmd=1,Reply=2};
|
enum Role {Invalid=0,Cmd=1,Reply=2};
|
||||||
RDMacro();
|
RDMacro();
|
||||||
RDMacro::Role role() const;
|
RDMacro::Role role() const;
|
||||||
|
@ -336,6 +336,18 @@ void RDStation::setJackCommandLine(const QString &str) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int RDStation::jackPorts() const
|
||||||
|
{
|
||||||
|
return RDGetSqlValue("STATIONS","NAME",station_name,"JACK_PORTS").toInt();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void RDStation::setJackPorts(int ports) const
|
||||||
|
{
|
||||||
|
SetRow("JACK_PORTS",ports);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int RDStation::cueCard() const
|
int RDStation::cueCard() const
|
||||||
{
|
{
|
||||||
return RDGetSqlValue("STATIONS","NAME",station_name,"CUE_CARD").toInt();
|
return RDGetSqlValue("STATIONS","NAME",station_name,"CUE_CARD").toInt();
|
||||||
@ -867,14 +879,15 @@ bool RDStation::create(const QString &name,QString *err_msg,
|
|||||||
"START_JACK,"+ // 13
|
"START_JACK,"+ // 13
|
||||||
"JACK_SERVER_NAME,"+ // 14
|
"JACK_SERVER_NAME,"+ // 14
|
||||||
"JACK_COMMAND_LINE,"+ // 15
|
"JACK_COMMAND_LINE,"+ // 15
|
||||||
"CUE_CARD,"+ // 16
|
"JACK_PORTS,"+ // 16
|
||||||
"CUE_PORT,"+ // 17
|
"CUE_CARD,"+ // 17
|
||||||
"CUE_START_CART,"+ // 18
|
"CUE_PORT,"+ // 18
|
||||||
"CUE_STOP_CART,"+ // 19
|
"CUE_START_CART,"+ // 19
|
||||||
"CARTSLOT_COLUMNS,"+ // 20
|
"CUE_STOP_CART,"+ // 20
|
||||||
"CARTSLOT_ROWS,"+ // 21
|
"CARTSLOT_COLUMNS,"+ // 21
|
||||||
"ENABLE_DRAGDROP,"+ // 22
|
"CARTSLOT_ROWS,"+ // 22
|
||||||
"ENFORCE_PANEL_SETUP "+ // 23
|
"ENABLE_DRAGDROP,"+ // 23
|
||||||
|
"ENFORCE_PANEL_SETUP "+ // 24
|
||||||
"from STATIONS where "+
|
"from STATIONS where "+
|
||||||
"NAME=\""+RDEscapeString(exemplar)+"\"";
|
"NAME=\""+RDEscapeString(exemplar)+"\"";
|
||||||
q=new RDSqlQuery(sql);
|
q=new RDSqlQuery(sql);
|
||||||
@ -901,14 +914,15 @@ bool RDStation::create(const QString &name,QString *err_msg,
|
|||||||
"START_JACK=\""+RDEscapeString(q->value(13).toString())+"\","+
|
"START_JACK=\""+RDEscapeString(q->value(13).toString())+"\","+
|
||||||
"JACK_SERVER_NAME=\""+RDEscapeString(q->value(14).toString())+"\","+
|
"JACK_SERVER_NAME=\""+RDEscapeString(q->value(14).toString())+"\","+
|
||||||
"JACK_COMMAND_LINE=\""+RDEscapeString(q->value(15).toString())+"\","+
|
"JACK_COMMAND_LINE=\""+RDEscapeString(q->value(15).toString())+"\","+
|
||||||
QString().sprintf("CUE_CARD=%d,",q->value(16).toInt())+
|
QString().sprintf("JACK_PORTS=%d,",q->value(16).toInt())+
|
||||||
QString().sprintf("CUE_PORT=%d,",q->value(17).toInt())+
|
QString().sprintf("CUE_CARD=%d,",q->value(17).toInt())+
|
||||||
QString().sprintf("CUE_START_CART=%u,",q->value(18).toInt())+
|
QString().sprintf("CUE_PORT=%d,",q->value(18).toInt())+
|
||||||
QString().sprintf("CUE_STOP_CART=%u,",q->value(19).toInt())+
|
QString().sprintf("CUE_START_CART=%u,",q->value(19).toInt())+
|
||||||
QString().sprintf("CARTSLOT_COLUMNS=%d,",q->value(20).toInt())+
|
QString().sprintf("CUE_STOP_CART=%u,",q->value(20).toInt())+
|
||||||
QString().sprintf("CARTSLOT_ROWS=%d,",q->value(21).toInt())+
|
QString().sprintf("CARTSLOT_COLUMNS=%d,",q->value(21).toInt())+
|
||||||
"ENABLE_DRAGDROP=\""+RDEscapeString(q->value(22).toString())+"\","+
|
QString().sprintf("CARTSLOT_ROWS=%d,",q->value(22).toInt())+
|
||||||
"ENFORCE_PANEL_SETUP=\""+RDEscapeString(q->value(23).toString())+"\"";
|
"ENABLE_DRAGDROP=\""+RDEscapeString(q->value(23).toString())+"\","+
|
||||||
|
"ENFORCE_PANEL_SETUP=\""+RDEscapeString(q->value(24).toString())+"\"";
|
||||||
q1=new RDSqlQuery(sql);
|
q1=new RDSqlQuery(sql);
|
||||||
if(!q1->isActive()) {
|
if(!q1->isActive()) {
|
||||||
*err_msg=QObject::tr("host already exists");
|
*err_msg=QObject::tr("host already exists");
|
||||||
|
@ -76,6 +76,8 @@ class RDStation
|
|||||||
void setJackServerName(const QString &str) const;
|
void setJackServerName(const QString &str) const;
|
||||||
QString jackCommandLine() const;
|
QString jackCommandLine() const;
|
||||||
void setJackCommandLine(const QString &str) const;
|
void setJackCommandLine(const QString &str) const;
|
||||||
|
int jackPorts() const;
|
||||||
|
void setJackPorts(int ports) const;
|
||||||
int cueCard() const;
|
int cueCard() const;
|
||||||
void setCueCard(int card);
|
void setCueCard(int card);
|
||||||
int cuePort() const;
|
int cuePort() const;
|
||||||
|
@ -95,6 +95,16 @@ EditJack::EditJack(RDStation *station,QWidget *parent)
|
|||||||
edit_jack_command_line_label->
|
edit_jack_command_line_label->
|
||||||
setAlignment(AlignRight|AlignVCenter|ShowPrefix);
|
setAlignment(AlignRight|AlignVCenter|ShowPrefix);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Initial Audio Ports
|
||||||
|
//
|
||||||
|
edit_jack_audio_ports_spin=new QSpinBox(this);
|
||||||
|
edit_jack_audio_ports_spin->setRange(0,24);
|
||||||
|
edit_jack_audio_ports_label=
|
||||||
|
new QLabel(edit_jack_audio_ports_spin,tr("Initial Audio Ports")+":",this);
|
||||||
|
edit_jack_audio_ports_label->setFont(font);
|
||||||
|
edit_jack_audio_ports_label->setAlignment(AlignRight|AlignVCenter|ShowPrefix);
|
||||||
|
|
||||||
//
|
//
|
||||||
// JACK Client List
|
// JACK Client List
|
||||||
//
|
//
|
||||||
@ -159,6 +169,7 @@ EditJack::EditJack(RDStation *station,QWidget *parent)
|
|||||||
edit_start_jack_box->setChecked(edit_station->startJack());
|
edit_start_jack_box->setChecked(edit_station->startJack());
|
||||||
edit_jack_server_name_edit->setText(edit_station->jackServerName());
|
edit_jack_server_name_edit->setText(edit_station->jackServerName());
|
||||||
edit_jack_command_line_edit->setText(edit_station->jackCommandLine());
|
edit_jack_command_line_edit->setText(edit_station->jackCommandLine());
|
||||||
|
edit_jack_audio_ports_spin->setValue(edit_station->jackPorts());
|
||||||
if(edit_jack_server_name_edit->text().isEmpty()) {
|
if(edit_jack_server_name_edit->text().isEmpty()) {
|
||||||
edit_jack_server_name_edit->setText(EDITJACK_DEFAULT_SERVERNAME);
|
edit_jack_server_name_edit->setText(EDITJACK_DEFAULT_SERVERNAME);
|
||||||
}
|
}
|
||||||
@ -170,7 +181,7 @@ EditJack::EditJack(RDStation *station,QWidget *parent)
|
|||||||
|
|
||||||
QSize EditJack::sizeHint() const
|
QSize EditJack::sizeHint() const
|
||||||
{
|
{
|
||||||
return QSize(450,330);
|
return QSize(450,352);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -279,6 +290,7 @@ void EditJack::okData()
|
|||||||
edit_station->setJackServerName(edit_jack_server_name_edit->text());
|
edit_station->setJackServerName(edit_jack_server_name_edit->text());
|
||||||
}
|
}
|
||||||
edit_station->setJackCommandLine(edit_jack_command_line_edit->text());
|
edit_station->setJackCommandLine(edit_jack_command_line_edit->text());
|
||||||
|
edit_station->setJackPorts(edit_jack_audio_ports_spin->value());
|
||||||
item=(RDListViewItem *)edit_jack_client_view->firstChild();
|
item=(RDListViewItem *)edit_jack_client_view->firstChild();
|
||||||
while(item!=NULL) {
|
while(item!=NULL) {
|
||||||
sql=QString("update JACK_CLIENTS set DESCRIPTION=\"")+
|
sql=QString("update JACK_CLIENTS set DESCRIPTION=\"")+
|
||||||
@ -311,9 +323,12 @@ void EditJack::resizeEvent(QResizeEvent *e)
|
|||||||
edit_jack_command_line_label->setGeometry(10,54,130,20);
|
edit_jack_command_line_label->setGeometry(10,54,130,20);
|
||||||
edit_jack_command_line_edit->setGeometry(145,54,size().width()-155,20);
|
edit_jack_command_line_edit->setGeometry(145,54,size().width()-155,20);
|
||||||
|
|
||||||
edit_jack_client_label->setGeometry(15,80,sizeHint().width()-28,20);
|
edit_jack_audio_ports_label->setGeometry(10,76,130,20);
|
||||||
|
edit_jack_audio_ports_spin->setGeometry(145,76,50,20);
|
||||||
|
|
||||||
|
edit_jack_client_label->setGeometry(15,103,sizeHint().width()-28,20);
|
||||||
edit_jack_client_view->
|
edit_jack_client_view->
|
||||||
setGeometry(10,102,size().width()-20,size().height()-170);
|
setGeometry(10,124,size().width()-20,size().height()-192);
|
||||||
|
|
||||||
edit_add_button->setGeometry(15,size().height()-60,50,30);
|
edit_add_button->setGeometry(15,size().height()-60,50,30);
|
||||||
edit_edit_button->setGeometry(75,size().height()-60,50,30);
|
edit_edit_button->setGeometry(75,size().height()-60,50,30);
|
||||||
|
@ -21,17 +21,18 @@
|
|||||||
#ifndef EDIT_JACK_H
|
#ifndef EDIT_JACK_H
|
||||||
#define EDIT_JACK_H
|
#define EDIT_JACK_H
|
||||||
|
|
||||||
#include <qdialog.h>
|
|
||||||
#include <qlistview.h>
|
|
||||||
#include <qtextedit.h>
|
|
||||||
#include <qpixmap.h>
|
|
||||||
#include <qcheckbox.h>
|
#include <qcheckbox.h>
|
||||||
#include <qlineedit.h>
|
#include <qdialog.h>
|
||||||
#include <qpushbutton.h>
|
|
||||||
#include <qlabel.h>
|
#include <qlabel.h>
|
||||||
|
#include <qlineedit.h>
|
||||||
|
#include <qlistview.h>
|
||||||
|
#include <qpixmap.h>
|
||||||
|
#include <qpushbutton.h>
|
||||||
|
#include <qspinbox.h>
|
||||||
|
#include <qtextedit.h>
|
||||||
|
|
||||||
#include <rdstation.h>
|
|
||||||
#include <rdlistview.h>
|
#include <rdlistview.h>
|
||||||
|
#include <rdstation.h>
|
||||||
|
|
||||||
#define EDITJACK_DEFAULT_SERVERNAME QObject::tr("(default)")
|
#define EDITJACK_DEFAULT_SERVERNAME QObject::tr("(default)")
|
||||||
|
|
||||||
@ -63,6 +64,8 @@ class EditJack : public QDialog
|
|||||||
QLineEdit *edit_jack_server_name_edit;
|
QLineEdit *edit_jack_server_name_edit;
|
||||||
QLabel *edit_jack_command_line_label;
|
QLabel *edit_jack_command_line_label;
|
||||||
QLineEdit *edit_jack_command_line_edit;
|
QLineEdit *edit_jack_command_line_edit;
|
||||||
|
QLabel *edit_jack_audio_ports_label;
|
||||||
|
QSpinBox *edit_jack_audio_ports_spin;
|
||||||
QLabel *edit_jack_client_label;
|
QLabel *edit_jack_client_label;
|
||||||
RDListView *edit_jack_client_view;
|
RDListView *edit_jack_client_view;
|
||||||
RDStation *edit_station;
|
RDStation *edit_station;
|
||||||
|
@ -1922,6 +1922,10 @@ Stále ještě chcete uložit?</translation>
|
|||||||
<source>Are you sure you want to delete JACK Client</source>
|
<source>Are you sure you want to delete JACK Client</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Initial Audio Ports</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>EditJackClient</name>
|
<name>EditJackClient</name>
|
||||||
|
@ -1897,6 +1897,10 @@ Do you still want to save?</source>
|
|||||||
<source>Are you sure you want to delete JACK Client</source>
|
<source>Are you sure you want to delete JACK Client</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Initial Audio Ports</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>EditJackClient</name>
|
<name>EditJackClient</name>
|
||||||
|
@ -1928,6 +1928,10 @@ Do you still want to save?</source>
|
|||||||
<source>Are you sure you want to delete JACK Client</source>
|
<source>Are you sure you want to delete JACK Client</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Initial Audio Ports</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>EditJackClient</name>
|
<name>EditJackClient</name>
|
||||||
|
@ -1650,6 +1650,10 @@ Do you still want to save?</source>
|
|||||||
<source>Are you sure you want to delete JACK Client</source>
|
<source>Are you sure you want to delete JACK Client</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Initial Audio Ports</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>EditJackClient</name>
|
<name>EditJackClient</name>
|
||||||
|
@ -1884,6 +1884,10 @@ Vil du framleis lagra?</translation>
|
|||||||
<source>Are you sure you want to delete JACK Client</source>
|
<source>Are you sure you want to delete JACK Client</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Initial Audio Ports</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>EditJackClient</name>
|
<name>EditJackClient</name>
|
||||||
|
@ -1884,6 +1884,10 @@ Vil du framleis lagra?</translation>
|
|||||||
<source>Are you sure you want to delete JACK Client</source>
|
<source>Are you sure you want to delete JACK Client</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Initial Audio Ports</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>EditJackClient</name>
|
<name>EditJackClient</name>
|
||||||
|
@ -1882,6 +1882,10 @@ Você ainda quer salvar?</translation>
|
|||||||
<source>Are you sure you want to delete JACK Client</source>
|
<source>Are you sure you want to delete JACK Client</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Initial Audio Ports</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>EditJackClient</name>
|
<name>EditJackClient</name>
|
||||||
|
@ -317,11 +317,11 @@ MainObject::MainObject(QObject *parent)
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if(set_version.isEmpty()) {
|
if(set_version.isEmpty()) {
|
||||||
|
set_schema=RD_VERSION_DATABASE;
|
||||||
if(set_schema<schema) {
|
if(set_schema<schema) {
|
||||||
fprintf(stderr,"rddbmgr: reversion implied, you must explicitly specify the target schema\n");
|
fprintf(stderr,"rddbmgr: reversion implied, you must explicitly specify the target schema\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
set_schema=RD_VERSION_DATABASE;
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if((set_schema=GetVersionSchema(set_version))==0) {
|
if((set_schema=GetVersionSchema(set_version))==0) {
|
||||||
|
@ -29,6 +29,25 @@ bool MainObject::RevertSchema(int cur_schema,int set_schema,QString *err_msg) co
|
|||||||
RDSqlQuery *q;
|
RDSqlQuery *q;
|
||||||
QString tablename;
|
QString tablename;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Maintainer's Note:
|
||||||
|
//
|
||||||
|
// When adding a schema reversion here, be sure also to implement the
|
||||||
|
// corresponding update in updateschema.cpp!
|
||||||
|
//
|
||||||
|
|
||||||
|
//
|
||||||
|
// Revert 287
|
||||||
|
//
|
||||||
|
if((cur_schema==287)&&(set_schema<cur_schema)) {
|
||||||
|
sql=QString("alter table STATIONS drop column JACK_PORTS");
|
||||||
|
if(!RDSqlQuery::apply(sql,err_msg)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
cur_schema--;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Revert 286
|
// Revert 286
|
||||||
//
|
//
|
||||||
|
@ -56,7 +56,7 @@ void MainObject::InitializeSchemaMap() {
|
|||||||
global_version_map["2.17"]=268;
|
global_version_map["2.17"]=268;
|
||||||
global_version_map["2.18"]=272;
|
global_version_map["2.18"]=272;
|
||||||
global_version_map["2.19"]=275;
|
global_version_map["2.19"]=275;
|
||||||
global_version_map["2.20"]=286;
|
global_version_map["2.20"]=287;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -7157,6 +7157,17 @@ bool MainObject::UpdateSchema(int cur_schema,int set_schema,QString *err_msg) co
|
|||||||
cur_schema++;
|
cur_schema++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if((cur_schema<287)&&(set_schema>cur_schema)) {
|
||||||
|
sql=QString("alter table STATIONS add column ")+
|
||||||
|
"JACK_PORTS int not null default 8 after JACK_COMMAND_LINE";
|
||||||
|
if(!RDSqlQuery::apply(sql,err_msg)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
cur_schema++;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Maintainer's Note:
|
// Maintainer's Note:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user