tests: Add audio device selection question

So that the test utility mimicks the code in gnome-settings-daemon.
This commit is contained in:
Bastien Nocera 2016-04-17 22:26:16 +02:00
parent 2a117d6024
commit 8fc9c62a69
2 changed files with 30 additions and 8 deletions

View File

@ -31,13 +31,13 @@ GVC_LIBS = `pkg-config --libs gtk+-3.0 libpulse libpulse-mainloop-glib alsa`
all: test-audio-device-selection $(LIBGVC_SOURCES) tests-include/config.h
.c.o:
$(CC) -c $(GVC_CFLAGS) -I. -Itests-include/ $< -o $@
$(CC) -g3 -ggdb -c $(GVC_CFLAGS) -I. -Itests-include/ $< -o $@
C_SOURCES = $(filter %.c,$(LIBGVC_SOURCES))
OBJECTS=$(C_SOURCES:.c=.o)
test-audio-device-selection: $(OBJECTS) test-audio-device-selection.o
$(CC) $(GVC_LIBS) $(OBJECTS) test-audio-device-selection.o -o $@
$(CC) -g3 -ggdb $(GVC_LIBS) $(OBJECTS) test-audio-device-selection.o -o $@
clean:
rm -f *.o test-audio-device-selection

View File

@ -1,7 +1,11 @@
#include <stdio.h>
#include <locale.h>
#include <pulse/pulseaudio.h>
#include "gvc-mixer-control.h"
#define MAX_ATTEMPTS 3
typedef struct {
GvcHeadsetPortChoice choice;
gchar *name;
@ -14,18 +18,18 @@ static AudioSelectionChoice audio_selection_choices[] = {
};
static void
audio_selection_needed (GvcMixerControl *control,
audio_selection_needed (GvcMixerControl *volume,
guint id,
gboolean show_dialog,
GvcHeadsetPortChoice choices,
gpointer user_data)
{
char *args[G_N_ELEMENTS (audio_selection_choices) + 1];
char *choices_str;
guint i, n;
int response = -1;
if (!show_dialog) {
g_print ("Audio selection not needed anymore for id %d\n", id);
g_print ("--- Audio selection not needed anymore for id %d\n", id);
return;
}
@ -36,10 +40,26 @@ audio_selection_needed (GvcMixerControl *control,
}
args[n] = NULL;
choices_str = g_strjoinv (", ", args);
g_print ("+++ Audio selection needed for id %d\n", id);
g_print (" Choices are: %s\n", choices_str);
g_free (choices_str);
g_print (" Choices are: %s\n");
for (i = 0; args[i] != NULL; i++)
g_print (" %d. %s\n", i + 1, args[i]);
for (i = 0; response < 0 && i < MAX_ATTEMPTS; i++) {
int res;
g_print ("What is your choice?\n");
if (scanf ("%d", &res) == 1 &&
res > 0 &&
res < g_strv_length (args)) {
response = res;
break;
}
}
gvc_mixer_control_set_headset_port (volume,
id,
audio_selection_choices[response - 1].choice);
}
int main (int argc, char **argv)
@ -47,6 +67,8 @@ int main (int argc, char **argv)
GMainLoop *loop;
GvcMixerControl *volume;
setlocale (LC_ALL, "");
loop = g_main_loop_new (NULL, FALSE);
volume = gvc_mixer_control_new ("GNOME Volume Control test");