Don't store pointer to pa_module

pa_module pointers might become invalid at any time, so we use the
stable uin32_t index of the module for identifying or modules instead.
This commit is contained in:
Lennart Poettering 2008-12-17 21:19:53 +01:00
parent c5b8eb7edf
commit 86c6fd85f1

View file

@ -44,7 +44,7 @@ PA_MODULE_USAGE("");
struct module {
char *profile;
pa_module *pa_m;
uint32_t index;
PA_LLIST_FIELDS(struct module);
};
@ -78,7 +78,7 @@ static struct module *module_new(const char *profile, pa_module *pa_m) {
m = pa_xnew(struct module, 1);
m->profile = pa_xstrdup(profile);
m->pa_m = pa_m;
m->index = pa_m->index;
PA_LLIST_INIT(struct module, m);
return m;
@ -364,7 +364,7 @@ static void unload_module_for_device(struct userdata *u, struct device *d, const
if (!(m = module_find(d, profile)))
return;
pa_module_unload_request(m->pa_m, TRUE);
pa_module_unload_request_by_index(u->module->core, m->index, TRUE);
PA_LLIST_REMOVE(struct module, d->module_list, m);
module_free(m);