diff options
author | Jan Klemkow <web2p10@wemelug.de> | 2010-07-09 00:55:02 +0200 |
---|---|---|
committer | Jan Klemkow <web2p10@wemelug.de> | 2010-07-09 00:55:02 +0200 |
commit | 21b1027832ff5e53edc37dd9f5c153217a65b6fd (patch) | |
tree | 156d666ade9380434ecae73f9bd02fe71e2d2caf /sink.c | |
parent | 83a220ec9b1fe7e706478bc1604fe8741be649a2 (diff) | |
download | pa-sink-ctl-21b1027832ff5e53edc37dd9f5c153217a65b6fd.tar.gz pa-sink-ctl-21b1027832ff5e53edc37dd9f5c153217a65b6fd.tar.bz2 pa-sink-ctl-21b1027832ff5e53edc37dd9f5c153217a65b6fd.zip |
wip: cleanup sink & co.
Diffstat (limited to 'sink.c')
-rw-r--r-- | sink.c | 36 |
1 files changed, 34 insertions, 2 deletions
@@ -7,6 +7,9 @@ #include "sink_input.h" #include "sink.h" +/* + * return an initilized sink + */ sink_info* sink_init(void) { sink_info* sink = (sink_info*) calloc(1, sizeof(sink_info)); @@ -16,13 +19,13 @@ sink_info* sink_init(void) { sink->input_max = 1; sink->input_list = NULL; - sink_input_list_init(sink->input_list, sink->input_max); + sink->input_list = sink_input_list_init(sink->input_max); return sink; } /* - * free's sink + * frees all components of a sink */ void sink_clear(sink_info* sink) { @@ -32,4 +35,33 @@ void sink_clear(sink_info* sink) { sink_input_list_clear(sink->input_list, &sink->input_max); free(sink); + sink = NULL; +} + +void sink_check_list(sink_info* sink) { + + if (sink->input_counter >= sink->input_max) + sink_input_list_enlarge(sink->input_list, &sink->input_max, sink->input_counter); +} + +sink_info** sink_list_init(int max) { + + sink_info** sink_list = (sink_info**) calloc(max, sizeof(sink_info*)); + + for (int i = 0; i < max; ++i) + sink_list[i] = NULL; + + return sink_list; +} + +void sink_list_clear(sink_info** sink_list, int* max) { + + for (int i = 0; i < (*max); ++i) + if (sink_list[i] != NULL) + sink_clear(sink_list[i]); + + (*max) = 0; + + free(sink_list); + sink_list = NULL; } |