On Wed, 2013-05-15 at 10:46 +0200, Mikel Astiz wrote: > From: Mikel Astiz <mikel.astiz at bmw-carit.de> > > Backends are responsible for the notification of new transports, which > is backend-dependant. The core still holds ownership of the transport > objects. > --- > src/modules/bluetooth/bluetooth-util.c | 45 ++++++++++++++++++++++++---------- > src/modules/bluetooth/bluetooth-util.h | 13 ++++++++++ > 2 files changed, 45 insertions(+), 13 deletions(-) > > diff --git a/src/modules/bluetooth/bluetooth-util.c b/src/modules/bluetooth/bluetooth-util.c > index 2e3203e..56156a9 100644 > --- a/src/modules/bluetooth/bluetooth-util.c > +++ b/src/modules/bluetooth/bluetooth-util.c > @@ -1594,23 +1594,22 @@ static int setup_dbus(pa_bluetooth_discovery *y) { > static pa_bluetooth_transport *transport_new(pa_bluetooth_device *d, const char *owner, const char *path, enum profile p, > const uint8_t *config, int size) { > pa_bluetooth_transport *t; > + pa_bluetooth_transport_new_data data; > > - t = pa_xnew0(pa_bluetooth_transport, 1); > - t->device = d; > - t->owner = pa_xstrdup(owner); > - t->path = pa_xstrdup(path); > - t->profile = p; > - t->config_size = size; > - > - if (size > 0) { > - t->config = pa_xnew(uint8_t, size); > - memcpy(t->config, config, size); > - } > + data.device = d; > + data.profile = p; > + data.config_size = size; > + data.config = config; > > if (d->discovery->version == BLUEZ_VERSION_4) > - t->state = audio_state_to_transport_state(d->profile_state[p]); > + data.state = audio_state_to_transport_state(d->profile_state[p]); > else > - t->state = PA_BLUETOOTH_TRANSPORT_STATE_IDLE; > + data.state = PA_BLUETOOTH_TRANSPORT_STATE_IDLE; > + > + t = pa_bt_backend_notify_transport_added(&data); > + > + t->owner = pa_xstrdup(owner); > + t->path = pa_xstrdup(path); > > return t; > } If we want to follow common patterns of the PulseAudio code base, transport_new() would be renamed to bluez_transport_new() and pa_bt_backend_notify_transport_added() would be renamed to pa_bluetooth_transport_new(). Then there would be also pa_bluetooth_transport_put() to be called after the backend has fully completed the transport initialization. Is the configuration byte array a BlueZ specific thing, or is the config blob part of the Bluetooth specification? -- Tanu