summaryrefslogtreecommitdiff
path: root/sink.c
diff options
context:
space:
mode:
authoryounix <web2p10@wemelug.de>2010-07-11 12:59:27 +0200
committeryounix <web2p10@wemelug.de>2010-07-11 12:59:27 +0200
commit8c3db10b5bf7b77ff959d7d0b6cc425cfb37ccda (patch)
tree2207e831b25d317a8e5be23bd75d2cb4726c7a0d /sink.c
parent21b1027832ff5e53edc37dd9f5c153217a65b6fd (diff)
downloadpa-sink-ctl-8c3db10b5bf7b77ff959d7d0b6cc425cfb37ccda.tar.gz
pa-sink-ctl-8c3db10b5bf7b77ff959d7d0b6cc425cfb37ccda.tar.bz2
pa-sink-ctl-8c3db10b5bf7b77ff959d7d0b6cc425cfb37ccda.zip
wip: impl. management function
Diffstat (limited to 'sink.c')
-rw-r--r--sink.c32
1 files changed, 29 insertions, 3 deletions
diff --git a/sink.c b/sink.c
index 5875638..5abff14 100644
--- a/sink.c
+++ b/sink.c
@@ -38,13 +38,30 @@ void sink_clear(sink_info* sink) {
sink = NULL;
}
-void sink_check_list(sink_info* sink) {
+void sink_check(sink_info** sink) {
+
+ if ((*sink) == NULL)
+ (*sink) = (sink_info*) calloc(1, sizeof(sink_input_info));
+}
+/*
+ * check the list length and resize the list, if current position = max
+ */
+void sink_list_check(sink_info** sink_list, uint32_t* max, uint32_t counter) {
+ if (counter >= (*max)) {
+ (*max) *= 2;
+ sink_list = (sink_info**) realloc(sink_list, (*max) * sizeof(sink_info*));
+ for (int i = counter; i < (*max); ++i)
+ sink_list[i] = NULL;
+ }
+}
+
+void sink_check_input_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_init(uint32_t max) {
sink_info** sink_list = (sink_info**) calloc(max, sizeof(sink_info*));
@@ -54,13 +71,22 @@ sink_info** sink_list_init(int max) {
return sink_list;
}
-void sink_list_clear(sink_info** sink_list, int* max) {
+void sink_list_reset(sink_info** sink_list, uint32_t* counter) {
+
+ for (int i = 0; i < (*counter); ++i)
+ sink_list[i]->input_counter = 0;
+
+ (*counter) = 0;
+}
+
+void sink_list_clear(sink_info** sink_list, uint32_t* max, uint32_t* counter) {
for (int i = 0; i < (*max); ++i)
if (sink_list[i] != NULL)
sink_clear(sink_list[i]);
(*max) = 0;
+ (*counter) = 0;
free(sink_list);
sink_list = NULL;