basic cli interface
[profile/ivi/pulseaudio.git] / src / core.c
1 #include <stdlib.h>
2 #include <assert.h>
3 #include <stdio.h>
4
5 #include "core.h"
6 #include "module.h"
7 #include "sink.h"
8 #include "source.h"
9
10 struct core* core_new(struct mainloop *m) {
11     struct core* c;
12     c = malloc(sizeof(struct core));
13     assert(c);
14
15     c->mainloop = m;
16     c->clients = idxset_new(NULL, NULL);
17     c->sinks = idxset_new(NULL, NULL);
18     c->sources = idxset_new(NULL, NULL);
19     c->source_outputs = idxset_new(NULL, NULL);
20     c->sink_inputs = idxset_new(NULL, NULL);
21
22     c->default_source_index = c->default_sink_index = IDXSET_INVALID;
23
24     c->modules = NULL;
25     
26     return c;
27 };
28
29 void core_free(struct core *c) {
30     assert(c);
31
32     module_unload_all(c);
33     assert(!c->modules);
34     
35     assert(idxset_isempty(c->clients));
36     idxset_free(c->clients, NULL, NULL);
37     
38     assert(idxset_isempty(c->sinks));
39     idxset_free(c->sinks, NULL, NULL);
40
41     assert(idxset_isempty(c->sources));
42     idxset_free(c->sources, NULL, NULL);
43     
44     assert(idxset_isempty(c->source_outputs));
45     idxset_free(c->source_outputs, NULL, NULL);
46     
47     assert(idxset_isempty(c->sink_inputs));
48     idxset_free(c->sink_inputs, NULL, NULL);
49
50     free(c);    
51 };
52