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 all: test-audio-device-selection $(LIBGVC_SOURCES) tests-include/config.h
.c.o: .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)) C_SOURCES = $(filter %.c,$(LIBGVC_SOURCES))
OBJECTS=$(C_SOURCES:.c=.o) OBJECTS=$(C_SOURCES:.c=.o)
test-audio-device-selection: $(OBJECTS) test-audio-device-selection.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: clean:
rm -f *.o test-audio-device-selection rm -f *.o test-audio-device-selection

View File

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