}
static void transport_free(pa_bluetooth_transport *t) {
- unsigned i;
-
pa_assert(t);
- for (i = 0; i < PA_BLUETOOTH_TRANSPORT_HOOK_MAX; i++)
- pa_hook_done(&t->hooks[i]);
-
pa_xfree(t->owner);
pa_xfree(t->path);
pa_xfree(t->config);
pa_hashmap_remove(d->discovery->transports, t->path);
t->state = PA_BLUETOOTH_TRANSPORT_STATE_DISCONNECTED;
pa_hook_fire(&d->discovery->hooks[PA_BLUETOOTH_HOOK_TRANSPORT_STATE_CHANGED], t);
- pa_hook_fire(&t->hooks[PA_BLUETOOTH_TRANSPORT_HOOK_REMOVED], NULL);
transport_free(t);
}
t->nrec = value;
pa_log_debug("Transport %s: Property 'NREC' changed to %s.", t->path, t->nrec ? "True" : "False");
pa_hook_fire(&t->device->discovery->hooks[PA_BLUETOOTH_HOOK_TRANSPORT_NREC_CHANGED], t);
- pa_hook_fire(&t->hooks[PA_BLUETOOTH_TRANSPORT_HOOK_NREC_CHANGED], NULL);
}
break;
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;
- unsigned i;
t = pa_xnew0(pa_bluetooth_transport, 1);
t->device = d;
t->state = pa_bt_audio_state_to_transport_state(d->profile_state[p]);
- for (i = 0; i < PA_BLUETOOTH_TRANSPORT_HOOK_MAX; i++)
- pa_hook_init(&t->hooks[i], t);
-
return t;
}
pa_hashmap_remove(y->transports, t->path);
t->state = PA_BLUETOOTH_TRANSPORT_STATE_DISCONNECTED;
pa_hook_fire(&y->hooks[PA_BLUETOOTH_HOOK_TRANSPORT_STATE_CHANGED], t);
- pa_hook_fire(&t->hooks[PA_BLUETOOTH_TRANSPORT_HOOK_REMOVED], NULL);
transport_free(t);
}
PA_BLUETOOTH_HOOK_MAX
} pa_bluetooth_hook_t;
-/* Hook data: pa_bluetooth_transport pointer. */
-typedef enum pa_bluetooth_transport_hook {
- PA_BLUETOOTH_TRANSPORT_HOOK_NREC_CHANGED, /* Call data: NULL. */
- PA_BLUETOOTH_TRANSPORT_HOOK_REMOVED, /* Call data: NULL. */
- PA_BLUETOOTH_TRANSPORT_HOOK_MAX
-} pa_bluetooth_transport_hook_t;
-
typedef enum pa_bluetooth_transport_state {
PA_BLUETOOTH_TRANSPORT_STATE_DISCONNECTED,
PA_BLUETOOTH_TRANSPORT_STATE_IDLE, /* Connected but not playing */
pa_bluetooth_transport_state_t state;
pa_bool_t nrec;
-
- pa_hook hooks[PA_BLUETOOTH_TRANSPORT_HOOK_MAX];
};
/* This enum is shared among Audio, Headset, AudioSink, and AudioSource, although not all values are acceptable in all profiles */