add name registrar
[platform/upstream/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 #include "namereg.h"
10
11 struct core* core_new(struct pa_mainloop_api *m) {
12     struct core* c;
13     c = malloc(sizeof(struct core));
14     assert(c);
15
16     c->mainloop = m;
17     c->clients = idxset_new(NULL, NULL);
18     c->sinks = idxset_new(NULL, NULL);
19     c->sources = idxset_new(NULL, NULL);
20     c->source_outputs = idxset_new(NULL, NULL);
21     c->sink_inputs = idxset_new(NULL, NULL);
22
23     c->default_source_index = c->default_sink_index = IDXSET_INVALID;
24
25     c->modules = NULL;
26     c->namereg = NULL;
27     
28     return c;
29 };
30
31 void core_free(struct core *c) {
32     assert(c);
33
34     module_unload_all(c);
35     assert(!c->modules);
36     
37     assert(idxset_isempty(c->clients));
38     idxset_free(c->clients, NULL, NULL);
39     
40     assert(idxset_isempty(c->sinks));
41     idxset_free(c->sinks, NULL, NULL);
42
43     assert(idxset_isempty(c->sources));
44     idxset_free(c->sources, NULL, NULL);
45     
46     assert(idxset_isempty(c->source_outputs));
47     idxset_free(c->source_outputs, NULL, NULL);
48     
49     assert(idxset_isempty(c->sink_inputs));
50     idxset_free(c->sink_inputs, NULL, NULL);
51
52     namereg_free(c);
53     
54     free(c);    
55 };
56