mirror of
https://gitlab.gnome.org/GNOME/libgnome-volume-control.git
synced 2024-11-21 08:20:40 -05:00
tests: Add audio device selection question
So that the test utility mimicks the code in gnome-settings-daemon.
This commit is contained in:
parent
2a117d6024
commit
8fc9c62a69
@ -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
|
||||
|
@ -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");
|
||||
|
Loading…
Reference in New Issue
Block a user