]> code.delx.au - pulseaudio/blobdiff - src/pulsecore/core.c
remove soft volume from pa_sink_input_new_info since it should be handled internally...
[pulseaudio] / src / pulsecore / core.c
index 381a677901f029e80782c0ca00c5882d623a85bf..5fd2bdfb4359cc90056f819efb2d9154ef9dc211 100644 (file)
@@ -92,19 +92,21 @@ pa_core* pa_core_new(pa_mainloop_api *m, pa_bool_t shared, size_t shm_size) {
 
     c->state = PA_CORE_STARTUP;
     c->mainloop = m;
+
     c->clients = pa_idxset_new(NULL, NULL);
+    c->cards = pa_idxset_new(NULL, NULL);
     c->sinks = pa_idxset_new(NULL, NULL);
     c->sources = pa_idxset_new(NULL, NULL);
-    c->source_outputs = pa_idxset_new(NULL, NULL);
     c->sink_inputs = pa_idxset_new(NULL, NULL);
-    c->cards = pa_idxset_new(NULL, NULL);
+    c->source_outputs = pa_idxset_new(NULL, NULL);
+    c->modules = pa_idxset_new(NULL, NULL);
+    c->scache = pa_idxset_new(NULL, NULL);
 
-    c->default_source_name = c->default_sink_name = NULL;
+    c->namereg = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
+    c->shared = pa_hashmap_new(pa_idxset_string_hash_func, pa_idxset_string_compare_func);
 
-    c->modules = NULL;
-    c->namereg = NULL;
-    c->scache = NULL;
-    c->running_as_daemon = FALSE;
+    c->default_source = NULL;
+    c->default_sink = NULL;
 
     c->default_sample_spec.format = PA_SAMPLE_S16NE;
     c->default_sample_spec.rate = 44100;
@@ -127,22 +129,20 @@ pa_core* pa_core_new(pa_mainloop_api *m, pa_bool_t shared, size_t shm_size) {
 
     c->exit_idle_time = -1;
     c->scache_idle_time = 20;
-    c->flat_volumes = TRUE;
-
-    c->resample_method = PA_RESAMPLER_SPEEX_FLOAT_BASE + 3;
 
+    c->flat_volumes = TRUE;
     c->disallow_module_loading = FALSE;
     c->disallow_exit = FALSE;
+    c->running_as_daemon = FALSE;
     c->realtime_scheduling = FALSE;
     c->realtime_priority = 5;
     c->disable_remixing = FALSE;
     c->disable_lfe_remixing = FALSE;
+    c->resample_method = PA_RESAMPLER_SPEEX_FLOAT_BASE + 3;
 
     for (j = 0; j < PA_CORE_HOOK_MAX; j++)
         pa_hook_init(&c->hooks[j], c);
 
-    pa_shared_init(c);
-
     pa_random(&c->cookie, sizeof(c->cookie));
 
 #ifdef SIGPIPE
@@ -164,7 +164,13 @@ static void core_free(pa_object *o) {
     c->state = PA_CORE_SHUTDOWN;
 
     pa_module_unload_all(c);
-    pa_assert(!c->modules);
+    pa_scache_free_all(c);
+
+    pa_assert(pa_idxset_isempty(c->scache));
+    pa_idxset_free(c->scache, NULL, NULL);
+
+    pa_assert(pa_idxset_isempty(c->modules));
+    pa_idxset_free(c->modules, NULL, NULL);
 
     pa_assert(pa_idxset_isempty(c->clients));
     pa_idxset_free(c->clients, NULL, NULL);
@@ -184,21 +190,23 @@ static void core_free(pa_object *o) {
     pa_assert(pa_idxset_isempty(c->sink_inputs));
     pa_idxset_free(c->sink_inputs, NULL, NULL);
 
-    pa_scache_free(c);
-    pa_namereg_free(c);
+    pa_assert(pa_hashmap_isempty(c->namereg));
+    pa_hashmap_free(c->namereg, NULL, NULL);
+
+    pa_assert(pa_hashmap_isempty(c->shared));
+    pa_hashmap_free(c->shared, NULL, NULL);
+
     pa_subscription_free_all(c);
 
     if (c->exit_event)
         c->mainloop->time_free(c->exit_event);
 
-    pa_xfree(c->default_source_name);
-    pa_xfree(c->default_sink_name);
+    pa_assert(!c->default_source);
+    pa_assert(!c->default_sink);
 
     pa_silence_cache_done(&c->silence_cache);
     pa_mempool_free(c->mempool);
 
-    pa_shared_cleanup(c);
-
     for (j = 0; j < PA_CORE_HOOK_MAX; j++)
         pa_hook_done(&c->hooks[j]);