Name: pulseaudio-modules-tizen
Summary: Pulseaudio modules for Tizen
-Version: 5.0.46
+Version: 5.0.47
Release: 0
Group: Multimedia/Audio
License: LGPL-2.1+
h->intf.pcm_recover = dlsym(h->dl_handle, "audio_pcm_recover");
h->intf.pcm_get_params = dlsym(h->dl_handle, "audio_pcm_get_params");
h->intf.pcm_set_params = dlsym(h->dl_handle, "audio_pcm_set_params");
- h->intf.set_message_cb = dlsym(h->dl_handle, "audio_set_message_cb");
+ h->intf.add_message_cb = dlsym(h->dl_handle, "audio_add_message_cb");
+ h->intf.remove_message_cb = dlsym(h->dl_handle, "audio_remove_message_cb");
if (h->intf.init) {
if (h->intf.init(&h->ah_handle) != AUDIO_RET_OK)
pa_log_error("hal_manager init failed");
return ret;
}
-int32_t pa_hal_manager_set_messsage_callback(pa_hal_manager *h, hal_message_callback callback, void *user_data) {
+int32_t pa_hal_manager_add_message_callback(pa_hal_manager *h, hal_message_callback callback, void *user_data) {
int32_t ret = 0;
audio_return_t hal_ret = AUDIO_RET_OK;
pa_assert(h);
pa_assert(callback);
- if (h->intf.set_message_cb == NULL) {
- pa_log_error("there is no set_message_cb symbol in this audio hal");
+ if (h->intf.add_message_cb == NULL) {
+ pa_log_error("there is no add_message_cb symbol in this audio hal");
ret = -1;
- } else if (AUDIO_IS_ERROR((hal_ret = h->intf.set_message_cb(h->ah_handle, (message_cb)callback, user_data)))) {
- pa_log_error("set_message_cb returns error:0x%x", hal_ret);
+ } else if (AUDIO_IS_ERROR((hal_ret = h->intf.add_message_cb(h->ah_handle, (message_cb)callback, user_data)))) {
+ pa_log_error("add_message_cb returns error:0x%x", hal_ret);
+ ret = -1;
+ }
+
+ return ret;
+}
+
+int32_t pa_hal_manager_remove_message_callback(pa_hal_manager *h, hal_message_callback callback) {
+ int32_t ret = 0;
+ audio_return_t hal_ret = AUDIO_RET_OK;
+
+ pa_assert(h);
+ pa_assert(callback);
+
+ if (h->intf.remove_message_cb == NULL) {
+ pa_log_error("there is no remove_message_cb symbol in this audio hal");
+ ret = -1;
+ } else if (AUDIO_IS_ERROR((hal_ret = h->intf.remove_message_cb(h->ah_handle, (message_cb)callback)))) {
+ pa_log_error("remove_message_cb returns error:0x%x", hal_ret);
ret = -1;
}
int32_t pa_hal_manager_pcm_recover(pa_hal_manager *h, pcm_handle pcm_h, int err);
int32_t pa_hal_manager_pcm_get_params(pa_hal_manager *h, pcm_handle pcm_h, uint32_t direction, void **sample_spec, uint32_t *period_size, uint32_t *periods);
int32_t pa_hal_manager_pcm_set_params(pa_hal_manager *h, pcm_handle pcm_h, uint32_t direction, void *sample_spec, uint32_t period_size, uint32_t periods);
-int32_t pa_hal_manager_set_messsage_callback(pa_hal_manager *h, hal_message_callback callback, void *user_data);
+int32_t pa_hal_manager_add_message_callback(pa_hal_manager *h, hal_message_callback callback, void *user_data);
+int32_t pa_hal_manager_remove_message_callback(pa_hal_manager *h, hal_message_callback callback);
#endif
m->core = c;
m->hal = pa_hal_manager_get(c);
- if (pa_hal_manager_set_messsage_callback(m->hal, message_cb, m))
- pa_log_warn("skip setting message callback");
+ if (pa_hal_manager_add_message_callback(m->hal, message_cb, m))
+ pa_log_warn("skip adding message callback");
m->dm = pa_device_manager_get(c);
m->subs_ob = pa_subscribe_observer_get(c);
#ifdef HAVE_DBUS
deinit_volumes(m);
deinit_stream_map(m);
deinit_ipc(m);
- if (m->hal)
+ if (m->hal) {
+ pa_hal_manager_remove_message_callback(m->hal, message_cb);
pa_hal_manager_unref(m->hal);
+ }
if (m->dm)
pa_device_manager_unref(m->dm);
if (m->subs_ob)
if (m->dm)
pa_device_manager_unref(m->dm);
- if (m->hal)
+ if (m->hal) {
+ pa_hal_manager_remove_message_callback(m->hal, message_cb);
pa_hal_manager_unref(m->hal);
+ }
pa_xfree(m);
}
/* Overall */
typedef struct audio_interface {
+ /* Initialization & de-initialization */
audio_return_t (*init)(void **audio_handle);
audio_return_t (*deinit)(void *audio_handle);
/* Volume */
/* Routing */
audio_return_t (*do_route)(void *audio_handle, audio_route_info_t *info);
audio_return_t (*update_route_option)(void *audio_handle, audio_route_option_t *option);
+ /* Stream */
audio_return_t (*update_stream_connection_info) (void *audio_handle, audio_stream_info_t *info, uint32_t is_connected);
- /* Buffer Attribute */
+ /* Buffer attribute */
audio_return_t (*get_buffer_attr)(void *audio_handle, uint32_t direction, const char *latency, uint32_t samplerate, int format, uint32_t channels,
uint32_t *maxlength, uint32_t *tlength, uint32_t *prebuf, uint32_t* minreq, uint32_t *fragsize);
- /* Interface of PCM device */
+ /* PCM device */
audio_return_t (*pcm_open)(void *audio_handle, void **pcm_handle, uint32_t direction, void *sample_spec, uint32_t period_size, uint32_t periods);
audio_return_t (*pcm_start)(void *audio_handle, void *pcm_handle);
audio_return_t (*pcm_stop)(void *audio_handle, void *pcm_handle);
audio_return_t (*pcm_recover)(void *audio_handle, void *pcm_handle, int revents);
audio_return_t (*pcm_get_params)(void *audio_handle, void *pcm_handle, uint32_t direction, void **sample_spec, uint32_t *period_size, uint32_t *periods);
audio_return_t (*pcm_set_params)(void *audio_handle, void *pcm_handle, uint32_t direction, void *sample_spec, uint32_t period_size, uint32_t periods);
- /* Message callback */
- audio_return_t (*set_message_cb)(void *audio_handle, message_cb callback, void *user_data);
+ /* Message callback (optional) */
+ audio_return_t (*add_message_cb)(void *audio_handle, message_cb callback, void *user_data);
+ audio_return_t (*remove_message_cb)(void *audio_handle, message_cb callback);
} audio_interface_t;
audio_return_t audio_init(void **audio_handle);
audio_return_t audio_pcm_recover(void *audio_handle, void *pcm_handle, int revents);
audio_return_t audio_pcm_get_params(void *audio_handle, void *pcm_handle, uint32_t direction, void **sample_spec, uint32_t *period_size, uint32_t *periods);
audio_return_t audio_pcm_set_params(void *audio_handle, void *pcm_handle, uint32_t direction, void *sample_spec, uint32_t period_size, uint32_t periods);
-audio_return_t audio_set_message_cb(void *audio_handle, message_cb callback, void *user_data);
+audio_return_t audio_add_message_cb(void *audio_handle, message_cb callback, void *user_data);
+audio_return_t audio_remove_message_cb(void *audio_handle, message_cb callback);
#endif