[pulseaudio-commits] src/pulsecore
Tanu Kaskinen
tanuk at kemper.freedesktop.org
Sat Feb 16 11:11:34 PST 2013
src/pulsecore/module.c | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
New commits:
commit 0785165e5c74c210b0e0311899168621524b9b6e
Author: David Henningsson <david.henningsson at canonical.com>
Date: Tue Feb 12 13:41:39 2013 +0100
module: Unload modules in reverse order
Unloading modules in the reverse order is the "more logical" thing
to do, and speeds up shutdown somewhat, e g by not loading
module-null-sink at shutdown.
Signed-off-by: David Henningsson <david.henningsson at canonical.com>
diff --git a/src/pulsecore/module.c b/src/pulsecore/module.c
index f63c9cd..47bcd3f 100644
--- a/src/pulsecore/module.c
+++ b/src/pulsecore/module.c
@@ -203,8 +203,29 @@ void pa_module_unload_by_index(pa_core *c, uint32_t idx, pa_bool_t force) {
}
void pa_module_unload_all(pa_core *c) {
+ pa_module *m;
+ uint32_t *indices;
+ uint32_t state;
+ int i;
+
pa_assert(c);
+ pa_assert(c->modules);
+
+ /* Unload modules in reverse order by default */
+ indices = pa_xnew(uint32_t, pa_idxset_size(c->modules));
+ i = 0;
+ PA_IDXSET_FOREACH(m, c->modules, state)
+ indices[i++] = state;
+ pa_assert(i == (int) pa_idxset_size(c->modules));
+ i--;
+ for (; i >= 0; i--) {
+ m = pa_idxset_remove_by_index(c->modules, indices[i]);
+ if (m)
+ pa_module_free(m);
+ }
+ pa_xfree(indices);
+ /* Just in case module unloading caused more modules to load */
pa_idxset_remove_all(c->modules, (pa_free_cb_t) pa_module_free);
if (c->module_defer_unload_event) {
More information about the pulseaudio-commits
mailing list