hdspmixer: Lower nesting depth in label assignment

This fix is mostly cosmetic, the long if-then-else-if-chain was rather
confusing. To improve code readability, use simple if-then statements
and leave the function as soon as a match is found.

Clear code would probably use a two-dimensional map, but it seems rather
overengineered.

Last but not least, the non-matching case was augmented by assigning a
generic "1", "2", "3" .. channel naming schema to prevent hdspmixer from
crashing.

Signed-off-by: Adrian Knoth <adi@drcomp.erfurt.thur.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Adrian Knoth 2011-03-01 10:42:26 +01:00 committed by Takashi Iwai
parent 042363a429
commit 05d6bc9728

View file

@ -198,71 +198,92 @@ void HDSPMixerOutput::setLabels()
int sm = basew->cards[basew->current_card]->speed_mode;
if (type == H9632) {
switch (sm) {
case 0:
labels_input = labels_playback = labels_9632_ss;
break;
case 1:
labels_input = labels_playback = labels_9632_ds;
break;
case 2:
labels_input = labels_playback = labels_9632_qs;
break;
}
} else if (type == Multiface) {
if (sm)
labels_input = labels_playback = labels_mf_ds;
else
labels_input = labels_playback = labels_mf_ss;
} else if (type == Digiface) {
if (sm)
labels_input = labels_playback = labels_df_ds;
else
labels_input = labels_playback = labels_df_ss;
} else if (HDSPeMADI == type) {
switch (sm) {
case 0:
labels_input = labels_playback = labels_madi_ss;
break;
case 1:
labels_input = labels_playback = labels_madi_ds;
break;
case 2:
labels_input = labels_playback = labels_madi_qs;
break;
}
} else if (HDSP_AES == type) {
labels_input = labels_playback = labels_aes32;
} else if (HDSPeAIO == type) {
switch (sm) {
case 0:
labels_input = labels_aio_ss_input;
labels_playback = labels_aio_ss_playback;
break;
case 1:
labels_input = labels_aio_ds_input;
labels_playback = labels_aio_ds_playback;
break;
case 2:
labels_input = labels_aio_qs_input;
labels_playback = labels_aio_ds_playback;
break;
}
} else if (HDSPeRayDAT == type) {
switch (sm) {
case 0:
labels_input = labels_playback = labels_raydat_ss;
break;
case 1:
labels_input = labels_playback = labels_raydat_ds;
break;
case 2:
labels_input = labels_playback = labels_raydat_qs;
break;
}
} else {
fprintf(stderr, "Unknown card type for output labels\n");
switch (sm) {
case 0:
labels_input = labels_playback = labels_9632_ss;
break;
case 1:
labels_input = labels_playback = labels_9632_ds;
break;
case 2:
labels_input = labels_playback = labels_9632_qs;
break;
}
return;
}
if (type == Multiface) {
if (sm)
labels_input = labels_playback = labels_mf_ds;
else
labels_input = labels_playback = labels_mf_ss;
return;
};
if (type == Digiface) {
if (sm)
labels_input = labels_playback = labels_df_ds;
else
labels_input = labels_playback = labels_df_ss;
return;
}
if (HDSPeMADI == type) {
switch (sm) {
case 0:
labels_input = labels_playback = labels_madi_ss;
break;
case 1:
labels_input = labels_playback = labels_madi_ds;
break;
case 2:
labels_input = labels_playback = labels_madi_qs;
break;
}
return;
}
if (HDSP_AES == type) {
labels_input = labels_playback = labels_aes32;
return;
}
if (HDSPeAIO == type) {
switch (sm) {
case 0:
labels_input = labels_aio_ss_input;
labels_playback = labels_aio_ss_playback;
break;
case 1:
labels_input = labels_aio_ds_input;
labels_playback = labels_aio_ds_playback;
break;
case 2:
labels_input = labels_aio_qs_input;
labels_playback = labels_aio_ds_playback;
break;
}
return;
}
if (HDSPeRayDAT == type) {
switch (sm) {
case 0:
labels_input = labels_playback = labels_raydat_ss;
break;
case 1:
labels_input = labels_playback = labels_raydat_ds;
break;
case 2:
labels_input = labels_playback = labels_raydat_qs;
break;
}
return;
}
fprintf(stderr, "Unknown card type for output labels, assigning defaults\n");
labels_input = labels_playback = labels_madi_ss;
}
void HDSPMixerOutput::draw_background()