mirror of
https://gitlab.gnome.org/GNOME/libgnome-volume-control.git
synced 2024-11-24 09:50:43 -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
|
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
|
||||||
|
@ -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");
|
||||||
|
Loading…
Reference in New Issue
Block a user