]> code.delx.au - pulseaudio/blob - src/core.c
some fixes
[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
10 struct core* core_new(struct pa_mainloop_api *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