]> code.delx.au - pulseaudio/blob - src/core.c
add name registrar
[pulseaudio] / 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