@@ -33,24 +33,28 @@ static snd_mixer_elem_t *elem = NULL;
static long alsa_min, alsa_max, alsa_vol;
-static void alsa_open_mixer( void )
+static void alsa_open_mixer( int verbose )
{
int err;
static snd_mixer_selem_id_t *sid = NULL;
if ((err = snd_mixer_open (&handle, 0)) < 0) {
- fprintf(stderr, "mixer: open error: %s\n", snd_strerror(err));
+ if (verbose)
+ fprintf(stderr, "mixer: open error: %s\n", snd_strerror(err));
return;
}
if ((err = snd_mixer_attach (handle, card)) < 0) {
- fprintf(stderr, "mixer: attach error: %s\n", snd_strerror(err));
+ if (verbose)
+ fprintf(stderr, "mixer: attach error: %s\n", snd_strerror(err));
goto error;
}
if ((err = snd_mixer_selem_register (handle, NULL, NULL)) < 0) {
- fprintf(stderr, "mixer: register error: %s\n", snd_strerror(err));
+ if (verbose)
+ fprintf(stderr, "mixer: register error: %s\n", snd_strerror(err));
goto error;
}
if ((err = snd_mixer_load (handle)) < 0) {
- fprintf(stderr, "mixer: load error: %s\n", snd_strerror(err));
+ if (verbose)
+ fprintf(stderr, "mixer: load error: %s\n", snd_strerror(err));
goto error;
}
snd_mixer_selem_id_malloc(&sid);
@@ -58,16 +62,20 @@ static void alsa_open_mixer( void )
goto error;
snd_mixer_selem_id_set_name(sid, channel);
if (!(elem = snd_mixer_find_selem(handle, sid))) {
- fprintf(stderr, "mixer: unable to find mixer for channel %s\n", channel);
+ if (verbose)
+ fprintf(stderr, "mixer: unable to find mixer for channel %s\n",
+ channel);
goto error;
}
if (!snd_mixer_selem_has_playback_volume(elem)) {
- fprintf(stderr, "mixer: no playback\n");
+ if (verbose)
+ fprintf(stderr, "mixer: no playback\n");
goto error;
}
snd_mixer_selem_get_playback_volume_range(elem, &alsa_min, &alsa_max);
if ((alsa_max - alsa_min) <= 0) {
- fprintf(stderr, "mixer: no valid playback range\n");
+ if (verbose)
+ fprintf(stderr, "mixer: no valid playback range\n");
goto error;
}
snd_mixer_selem_id_free(sid);
@@ -174,7 +182,7 @@ static int alsa_ismute( void )
return muted;
}
-static int alsa_set_device( const char *devname )
+static int alsa_set_device( const char *devname, int verbose )
{
int i;
@@ -189,10 +197,12 @@ static int alsa_set_device( const char *devname )
card[i] = 0;
channel = card + i + 1;
}
- alsa_open_mixer();
+ alsa_open_mixer( verbose );
if (!handle) {
- fprintf( stderr, "mixer: Can't open mixer %s (channel %s), "
- "mixer volume and mute unavailable.\n", card, channel );
+ if( verbose ) {
+ fprintf( stderr, "mixer: Can't open mixer %s (channel %s), "
+ "mixer volume and mute unavailable.\n", card, channel );
+ }
return -1;
}
return 0;
@@ -181,7 +181,7 @@ static int oss_ismute( void )
static char *oss_core_devnames[] = SOUND_DEVICE_NAMES;
-static int oss_set_device( const char *devname )
+static int oss_set_device( const char *devname, int verbose )
{
const char *channame;
int found = 0;
@@ -198,8 +198,10 @@ static int oss_set_device( const char *devname )
channame = mixer_device + i + 1;
}
if( !file_is_openable_for_read( mixer_device ) ) {
- fprintf( stderr, "mixer: Can't open device %s, "
- "mixer volume and mute unavailable.\n", mixer_device );
+ if( verbose ) {
+ fprintf( stderr, "mixer: Can't open device %s, "
+ "mixer volume and mute unavailable.\n", mixer_device );
+ }
return -1;
}
@@ -212,7 +214,9 @@ static int oss_set_device( const char *devname )
}
}
if( !found ) {
- fprintf( stderr, "mixer: No such mixer channel '%s', using channel 'line'.\n", channame );
+ if( verbose ) {
+ fprintf( stderr, "mixer: No such mixer channel '%s'.\n", channame );
+ }
return -1;
}
mixer_dev_mask = 1 << mixer_channel;
@@ -29,7 +29,7 @@
/**
* Sets the mixer device and channel.
*/
-static int null_set_device( const char *devname )
+static int null_set_device( const char *devname, int verbose )
{
return 0;
}
@@ -159,7 +159,7 @@ void mixer_init( config_t *cfg, const char *v4ldev )
mixer = mixers[i];
if (!mixer)
continue;
- if (mixer->set_device(devname) == 0)
+ if( mixer->set_device( devname, config_get_verbose( cfg ) ) == 0 )
break;
}
@@ -40,7 +40,7 @@ struct mixer {
/**
* Sets the mixer device and channel.
*/
-int (* set_device)( const char *devname );
+int (* set_device)( const char *devname, int verbose );
/**
* Sets the initial state of the mixer device.
On most systems now a days we end up using digital loopback and do not have a valid mixer config, silence mixer error spew on startup. Signed-off-by: Hans de Goede <hdegoede@redhat.com> --- src/mixer-alsa.c | 34 ++++++++++++++++++++++------------ src/mixer-oss.c | 12 ++++++++---- src/mixer.c | 4 ++-- src/mixer.h | 2 +- 4 files changed, 33 insertions(+), 19 deletions(-)