int mm_sound_client_add_device_info_changed_callback(int device_flags, mm_sound_device_info_changed_cb func, void* user_data, unsigned int *subs_id);
int mm_sound_client_remove_device_info_changed_callback(unsigned int subs_id);
#ifdef USE_FOCUS
+int mm_sound_client_set_session_interrupt_callback(mm_sound_focus_session_interrupt_cb callback, void* user_data);
+int mm_sound_client_unset_session_interrupt_callback(void);
int mm_sound_client_get_uniq_id(int *id);
int mm_sound_client_register_focus(int id, const char *stream_type, mm_sound_focus_changed_cb callback, void* user_data);
int mm_sound_client_unregister_focus(int id);
int mm_sound_client_dbus_get_audio_path(mm_sound_device_in *device_in, mm_sound_device_out *device_out);
#ifdef USE_FOCUS
+int mm_sound_client_dbus_set_session_interrupt_callback(mm_sound_focus_session_interrupt_cb callback, void* user_data);
+int mm_sound_client_dbus_unset_session_interrupt_callback(void);
int mm_sound_client_dbus_register_focus(int id, const char *stream_type, mm_sound_focus_changed_cb callback, void* user_data);
int mm_sound_client_dbus_unregister_focus(int id);
int mm_sound_client_dbus_acquire_focus(int id, mm_sound_focus_type_e type, const char *option);
int mm_sound_set_focus_watch_callback(mm_sound_focus_type_e focus_type, mm_sound_focus_changed_watch_cb callback, void *user_data, int *id);
int mm_sound_unset_focus_watch_callback(int id);
+typedef void (*mm_sound_focus_session_interrupt_cb) (mm_sound_focus_state_e state, const char *reason_for_change, bool is_wcb, void *user_data);
+int mm_sound_focus_set_session_interrupt_callback(mm_sound_focus_session_interrupt_cb callback, void *user_data);
+int mm_sound_focus_unset_session_interrupt_callback(void);
+
#ifdef __cplusplus
}
#ifdef USE_FOCUS
+int mm_sound_client_set_session_interrupt_callback(mm_sound_focus_session_interrupt_cb callback, void* user_data)
+{
+ int ret = MM_ERROR_NONE;
+
+ debug_fenter();
+
+ if (!callback)
+ return MM_ERROR_INVALID_ARGUMENT;
+
+ ret = mm_sound_client_dbus_set_session_interrupt_callback(callback, user_data);
+
+ debug_fleave();
+ return ret;
+}
+
+int mm_sound_client_unset_session_interrupt_callback(void)
+{
+ int ret = MM_ERROR_NONE;
+
+ debug_fenter();
+
+ ret = mm_sound_client_dbus_unset_session_interrupt_callback();
+
+ debug_fleave();
+ return ret;
+}
+
int mm_sound_client_get_uniq_id(int *id)
{
static int uniq_id = 0;
int ret = MM_ERROR_NONE;
debug_fenter();
- mm_sound_client_dbus_release_focus(id, type, option);
+ ret = mm_sound_client_dbus_release_focus(id, type, option);
debug_fleave();
return ret;
int ret = MM_ERROR_NONE;
debug_fenter();
- mm_sound_client_dbus_set_focus_watch_callback(focus_type, callback, user_data, id);
+ ret = mm_sound_client_dbus_set_focus_watch_callback(focus_type, callback, user_data, id);
debug_fleave();
return ret;
char name [MM_SOUND_NAME_NUM];
} focus_cb_data_lib;
+typedef struct {
+ mm_sound_focus_session_interrupt_cb user_cb;
+ void* user_data;
+} focus_session_interrupt_info_t;
GThread *g_focus_thread;
GMainLoop *g_focus_loop;
focus_sound_info_t g_focus_sound_handle[FOCUS_HANDLE_MAX];
+focus_session_interrupt_info_t g_focus_session_interrupt_info = {NULL, NULL};
guint g_dbus_subs_ids[SIGNAL_MAX];
guint g_dbus_prop_subs_ids[PULSEAUDIO_PROP_MAX];
debug_error("[CALLBACK(%p) START]",g_focus_sound_handle[focus_index].focus_callback);
(g_focus_sound_handle[focus_index].focus_callback)(cb_data.handle, cb_data.type, cb_data.state, cb_data.stream_type, cb_data.name, g_focus_sound_handle[focus_index].user_data);
debug_error("[CALLBACK END]");
+ if (g_focus_session_interrupt_info.user_cb) {
+ debug_error("sending session interrupt callback(%p)", g_focus_session_interrupt_info.user_cb);
+ (g_focus_session_interrupt_info.user_cb)(cb_data.state, cb_data.stream_type, false, g_focus_session_interrupt_info.user_data);
+ }
}
#ifdef CONFIG_ENABLE_RETCB
debug_msg("[CALLBACK(%p) START]",g_focus_sound_handle[focus_index].watch_callback);
(g_focus_sound_handle[focus_index].watch_callback)(cb_data.handle, cb_data.type, cb_data.state, cb_data.stream_type, cb_data.name, g_focus_sound_handle[focus_index].user_data);
debug_msg("[CALLBACK END]");
+ if (g_focus_session_interrupt_info.user_cb) {
+ debug_error("sending session interrupt callback(%p)", g_focus_session_interrupt_info.user_cb);
+ (g_focus_session_interrupt_info.user_cb)(cb_data.state, cb_data.stream_type, true, g_focus_session_interrupt_info.user_data);
+ }
#ifdef CONFIG_ENABLE_RETCB
debug_fleave();
}
+int mm_sound_client_dbus_set_session_interrupt_callback(mm_sound_focus_session_interrupt_cb callback, void* user_data)
+{
+ debug_fenter();
+
+ if (!callback)
+ return MM_ERROR_INVALID_ARGUMENT;
+
+ g_focus_session_interrupt_info.user_cb = callback;
+ g_focus_session_interrupt_info.user_data = user_data;
+
+ debug_fleave();
+ return MM_ERROR_NONE;
+}
+
+int mm_sound_client_dbus_unset_session_interrupt_callback(void)
+{
+ debug_fenter();
+ if (!g_focus_session_interrupt_info.user_cb) {
+ debug_error("no callback to unset");
+ return MM_ERROR_SOUND_INTERNAL;
+ }
+
+ g_focus_session_interrupt_info.user_cb = NULL;
+ g_focus_session_interrupt_info.user_data = NULL;
+
+ debug_fleave();
+ return MM_ERROR_NONE;
+}
+
int mm_sound_client_dbus_register_focus(int id, const char *stream_type, mm_sound_focus_changed_cb callback, void* user_data)
{
int ret = MM_ERROR_NONE;
#include "focus_server/include/mm_sound_mgr_focus.h"
EXPORT_API
+int mm_sound_focus_set_session_interrupt_callback(mm_sound_focus_session_interrupt_cb callback, void *user_data)
+{
+ int ret = MM_ERROR_NONE;
+ debug_fenter();
+
+ if (!callback)
+ return MM_ERROR_INVALID_ARGUMENT;
+
+ ret = mm_sound_client_set_session_interrupt_callback (callback, user_data);
+
+ debug_fleave();
+
+ return ret;
+}
+
+EXPORT_API
+int mm_sound_focus_unset_session_interrupt_callback(void)
+{
+ int ret = MM_ERROR_NONE;
+ debug_fenter();
+
+ ret = mm_sound_client_unset_session_interrupt_callback ();
+ if (ret) {
+ debug_error("Failed to mm_sound_client_unset_session_interrupt_callback(), ret[0x%x]\n", ret);
+ }
+
+ debug_fleave();
+
+ return ret;
+}
+
+EXPORT_API
int mm_sound_focus_get_id(int *id)
{
int ret = MM_ERROR_NONE;
Name: libmm-sound
Summary: MMSound Package contains client lib and sound_server binary
-Version: 0.9.250
+Version: 0.9.251
Release: 0
Group: System/Libraries
License: Apache-2.0