diff options
-rw-r--r-- | src/interface.c | 40 | ||||
-rw-r--r-- | src/pa-sink-ctl.c | 2 | ||||
-rw-r--r-- | src/sink.c | 10 | ||||
-rw-r--r-- | src/sink.h | 3 |
4 files changed, 33 insertions, 22 deletions
diff --git a/src/interface.c b/src/interface.c index 76fb29e..c3c8ba7 100644 --- a/src/interface.c +++ b/src/interface.c @@ -58,8 +58,8 @@ void print_sink_list(void) if (chooser_input == -2) { chooser_input = -1; /* if index is going to be not found, select the sink itself */ /* step through inputs for current sink and find the selected */ - for (int i = 0; i < g_array_index(sink_list, sink_info, chooser_sink).input_list->len; ++i) { - if (selected_index == g_array_index(g_array_index(sink_list, sink_info, chooser_sink).input_list, sink_input_info, i).index) { + for (int i = 0; i < sink_list_get(chooser_sink)->input_list->len; ++i) { + if (selected_index == sink_input_get(chooser_sink, i)->index) { chooser_input = i; break; } @@ -72,16 +72,16 @@ void print_sink_list(void) wattron(menu_win, A_REVERSE); mvwprintw(menu_win, y+i+offset, x, "%2d %-13s", - g_array_index(sink_list, sink_info, i).index, - g_array_index(sink_list, sink_info, i).device != NULL ? g_array_index(sink_list, sink_info, i).device : g_array_index(sink_list, sink_info, i).name); + sink_list_get(i)->index, + sink_list_get(i)->device != NULL ? sink_list_get(i)->device : sink_list_get(i)->name); if (i == chooser_sink && chooser_input == -1) wattroff(menu_win, A_REVERSE); - print_volume(g_array_index(sink_list, sink_info, i).vol, g_array_index(sink_list, sink_info, i).mute, y+i+offset); + print_volume(sink_list_get(i)->vol, sink_list_get(i)->mute, y+i+offset); print_input_list(i); - offset += g_array_index(sink_list, sink_info, i).input_list->len; + offset += sink_list_get(i)->input_list->len; } wrefresh(menu_win); } @@ -90,20 +90,18 @@ void print_input_list(int sink_num) { int offset = sink_num + 1 + 2; for (int i = 0; i < sink_num; ++i) - offset += g_array_index(sink_list, sink_info, i).input_list->len; + offset += sink_list_get(i)->input_list->len; - for (int i = 0; i < g_array_index(sink_list, sink_info, sink_num).input_list->len; ++i) { + for (int i = 0; i < sink_list_get(sink_num)->input_list->len; ++i) { if (chooser_sink == sink_num && chooser_input == i) wattron(menu_win, A_REVERSE); - mvwprintw(menu_win, offset + i, 2, "%*s%-*s", 2+1+1, "", 13 - 1, - g_array_index(g_array_index(sink_list, sink_info, sink_num).input_list, sink_input_info, i).name); + mvwprintw(menu_win, offset + i, 2, "%*s%-*s", 2+1+1, "", 13 - 1, sink_input_get(sink_num, i)->name); if (chooser_sink == sink_num && chooser_input == i) wattroff(menu_win, A_REVERSE); - print_volume(g_array_index(g_array_index(sink_list, sink_info, sink_num).input_list, sink_input_info, i).vol, - g_array_index(g_array_index(sink_list, sink_info, sink_num).input_list, sink_input_info, i).mute, offset + i); + print_volume(sink_input_get(sink_num, i)->vol, sink_input_get(sink_num, i)->mute, offset + i); } } @@ -136,7 +134,7 @@ void get_input(void) case KEY_UP: if (chooser_input == -1 && chooser_sink > 0) { --chooser_sink; - chooser_input = (gint)g_array_index(sink_list, sink_info, chooser_sink).input_list->len - 1; + chooser_input = (gint)sink_list_get(chooser_sink)->input_list->len - 1; } else if (chooser_input >= 0) @@ -145,11 +143,11 @@ void get_input(void) case 'j': case KEY_DOWN: - if (chooser_input == ((gint)g_array_index(sink_list, sink_info, chooser_sink).input_list->len - 1) && chooser_sink < (gint)sink_list->len - 1) { + if (chooser_input == ((gint)sink_list_get(chooser_sink)->input_list->len - 1) && chooser_sink < (gint)sink_list->len - 1) { ++chooser_sink; chooser_input = -1; } - else if (chooser_input < ((gint)g_array_index(sink_list, sink_info, chooser_sink).input_list->len - 1)) + else if (chooser_input < ((gint)sink_list_get(chooser_sink)->input_list->len - 1)) ++chooser_input; break; @@ -170,7 +168,7 @@ void get_input(void) } tmp; if (chooser_input >= 0) { - sink_input_info *input = &g_array_index(g_array_index(sink_list, sink_info, chooser_sink).input_list, sink_input_info, chooser_input); + sink_input_info *input = sink_input_get(chooser_sink, chooser_input); tmp = (struct tmp_t) { .index = input->index, .volume = (pa_cvolume) {.channels = input->channels}, @@ -178,7 +176,7 @@ void get_input(void) .volume_set = pa_context_set_sink_input_volume }; } else if (chooser_input == -1) { - sink_info *sink = &g_array_index(sink_list, sink_info, chooser_sink); + sink_info *sink = sink_list_get(chooser_sink); tmp = (struct tmp_t) { .index = sink->index, .volume = (pa_cvolume) {.channels = sink->channels}, @@ -203,14 +201,14 @@ void get_input(void) } tmp; if (chooser_input >= 0) { - sink_input_info *input = &g_array_index(g_array_index(sink_list, sink_info, chooser_sink).input_list, sink_input_info, chooser_input); + sink_input_info *input = sink_input_get(chooser_sink, chooser_input); tmp = (struct tmp_t) { .index = input->index, .mute = input->mute, .mute_set = pa_context_set_sink_input_mute }; } else if (chooser_input == -1) { - sink_info *sink = &g_array_index(sink_list, sink_info, chooser_sink); + sink_info *sink = sink_list_get(chooser_sink); tmp = (struct tmp_t) { .index = sink->index, .mute = sink->mute, @@ -226,7 +224,7 @@ void get_input(void) case ' ': if (chooser_input == -1) break; - selected_index = g_array_index(g_array_index(sink_list, sink_info, chooser_sink).input_list, sink_input_info, chooser_input).index; + selected_index = sink_input_get(chooser_sink, chooser_input)->index; if (chooser_sink < (gint)sink_list->len - 1) chooser_sink++; else @@ -234,7 +232,7 @@ void get_input(void) chooser_input = -2; /* chooser_input needs to be derived from $selected_index */ pa_operation_unref(pa_context_move_sink_input_by_index(context, selected_index, - g_array_index(sink_list, sink_info, chooser_sink).index, + sink_list_get(chooser_sink)->index, change_callback, NULL)); return; diff --git a/src/pa-sink-ctl.c b/src/pa-sink-ctl.c index aa7870a..2acc7df 100644 --- a/src/pa-sink-ctl.c +++ b/src/pa-sink-ctl.c @@ -143,7 +143,7 @@ void get_sink_input_info_callback(pa_context *c, const pa_sink_input_info *i, in snprintf(t, sizeof(t), "%u", i->owner_module); snprintf(k, sizeof(k), "%u", i->client); - g_array_append_val(g_array_index(sink_list, sink_info, i->sink).input_list, ((sink_input_info) { + g_array_append_val(sink_list_get(i->sink)->input_list, ((sink_input_info) { .index = i->index, .sink = i->sink, .name = strdup(pa_proplist_gets(i->proplist, "application.name")), @@ -8,6 +8,16 @@ #include "sink_input.h" #include "sink.h" +extern GArray *sink_list; + +sink_info *sink_list_get(int index) { + return &g_array_index(sink_list, sink_info, index); +} + +sink_input_info *sink_input_get(int sink_list_index, int index) { + return &g_array_index(sink_list_get(sink_list_index)->input_list, sink_input_info, index); +} + /* * init a sink list */ @@ -23,4 +23,7 @@ typedef struct _sink_info { GArray *sink_list_alloc(void); void sink_list_free(GArray *sink_list); +sink_info *sink_list_get(int index); +sink_input_info *sink_input_get(int sink_list_index, int index); + #endif |