Don't store pointer to pa_module
authorLennart Poettering <lennart@poettering.net>
Wed, 17 Dec 2008 20:19:53 +0000 (21:19 +0100)
committerLennart Poettering <lennart@poettering.net>
Mon, 12 Jan 2009 19:27:30 +0000 (20:27 +0100)
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.

src/modules/bluetooth/module-bluetooth-discover.c

index ddf944a..2fe0937 100644 (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);