From: Jo?o Paulo Rechi Vita <jprvita@xxxxxxxxxxxxx> Create a wrapper module called module-bluetooth-discover to avoid breaking backward-compatibility of default.pa. This wrapper may eventually be dropped altoghether with BlueZ 4 support. --- src/Makefile.am | 8 +++ src/modules/bluetooth/module-bluetooth-discover.c | 78 +++++++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 src/modules/bluetooth/module-bluetooth-discover.c diff --git a/src/Makefile.am b/src/Makefile.am index 9beda65..dd83c22 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1320,6 +1320,7 @@ endif if HAVE_BLUEZ modlibexec_LTLIBRARIES += \ + module-bluetooth-discover.la \ module-bluetooth-policy.la endif @@ -1422,6 +1423,7 @@ SYMDEF_FILES = \ module-udev-detect-symdef.h \ module-systemd-login-symdef.h \ module-bluetooth-policy-symdef.h \ + module-bluetooth-discover-symdef.h \ module-bluez4-discover-symdef.h \ module-bluez4-device-symdef.h \ module-bluez5-discover-symdef.h \ @@ -2019,6 +2021,12 @@ module_bluetooth_policy_la_LDFLAGS = $(MODULE_LDFLAGS) module_bluetooth_policy_la_LIBADD = $(MODULE_LIBADD) module_bluetooth_policy_la_CFLAGS = $(AM_CFLAGS) $(DBUS_CFLAGS) +# Bluetooth discover +module_bluetooth_discover_la_SOURCES = modules/bluetooth/module-bluetooth-discover.c +module_bluetooth_discover_la_LDFLAGS = $(MODULE_LDFLAGS) +module_bluetooth_discover_la_LIBADD = $(MODULE_LIBADD) +module_bluetooth_discover_la_CFLAGS = $(AM_CFLAGS) + # Bluetooth BlueZ 4 sink / source module_bluez4_discover_la_SOURCES = modules/bluetooth/module-bluez4-discover.c module_bluez4_discover_la_LDFLAGS = $(MODULE_LDFLAGS) diff --git a/src/modules/bluetooth/module-bluetooth-discover.c b/src/modules/bluetooth/module-bluetooth-discover.c new file mode 100644 index 0000000..c4fb26a --- /dev/null +++ b/src/modules/bluetooth/module-bluetooth-discover.c @@ -0,0 +1,78 @@ +/*** + This file is part of PulseAudio. + + Copyright 2013 Jo?o Paulo Rechi Vita + + PulseAudio is free software; you can redistribute it and/or modify + it under the terms of the GNU Lesser General Public License as + published by the Free Software Foundation; either version 2.1 of the + License, or (at your option) any later version. + + PulseAudio is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with PulseAudio; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + USA. +***/ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <pulsecore/core-util.h> +#include <pulsecore/macro.h> +#include <pulsecore/module.h> + +#include "module-bluetooth-discover-symdef.h" + +PA_MODULE_AUTHOR("Jo?o Paulo Rechi Vita"); +PA_MODULE_DESCRIPTION("Detect available Bluetooth daemon and load the corresponding discovery module"); +PA_MODULE_VERSION(PACKAGE_VERSION); +PA_MODULE_LOAD_ONCE(true); + +struct userdata { + pa_module *bluez5_module; + pa_module *bluez4_module; +}; + +int pa__init(pa_module* m) { + struct userdata *u; + + pa_assert(m); + + m->userdata = u = pa_xnew0(struct userdata, 1); + + if (pa_module_exists("module-bluez5-discover")) + u->bluez5_module = pa_module_load(m->core, "module-bluez5-discover", NULL); + + if (pa_module_exists("module-bluez4-discover")) + u->bluez4_module = pa_module_load(m->core, "module-bluez4-discover", NULL); + + if (!u->bluez5_module && !u->bluez4_module) { + pa_xfree(u); + return -1; + } + + return 0; +} + +void pa__done(pa_module* m) { + struct userdata *u; + + pa_assert(m); + + if (!(u = m->userdata)) + return; + + if (u->bluez5_module) + pa_module_unload(m->core, u->bluez5_module, true); + + if (u->bluez4_module) + pa_module_unload(m->core, u->bluez4_module, true); + + pa_xfree(u); +} -- 1.8.3.1