[AUDIO_METHOD_RELEASE_FOCUS] = {
.name = "ReleaseFocus",
},
+ [AUDIO_METHOD_UPDATE_STREAM_FOCUS_STATUS] = {
+ .name = "UpdateFocusStatusByFocusId",
+ },
[AUDIO_METHOD_WATCH_FOCUS] = {
.name = "WatchFocus",
},
int mm_sound_client_get_acquired_focus_stream_type(int focus_type, char **stream_type, int *option, char **ext_info);
int mm_sound_client_acquire_focus(int id, mm_sound_focus_type_e type, int option, const char *ext_info);
int mm_sound_client_release_focus(int id, mm_sound_focus_type_e type, int option, const char *ext_info);
+int mm_sound_client_update_stream_focus_status(int id, unsigned int status);
int mm_sound_client_set_focus_watch_callback(int pid, mm_sound_focus_type_e type, mm_sound_focus_changed_watch_cb callback, bool is_for_session, void* user_data, int *id);
int mm_sound_client_unset_focus_watch_callback(int id);
int mm_sound_client_execute_focus_func_in_main_context(focus_idle_event_type_e type, int data);
int mm_sound_release_focus(int id, mm_sound_focus_type_e focus_type, const char *ext_info);
int mm_sound_acquire_focus_with_option(int id, mm_sound_focus_type_e focus_type, int option, const char *ext_info);
int mm_sound_release_focus_with_option(int id, mm_sound_focus_type_e focus_type, int option, const char *ext_info);
+int mm_sound_update_focus_status(int id, unsigned int status);
typedef void (*mm_sound_focus_changed_watch_cb) (int id, mm_sound_focus_type_e focus_type, mm_sound_focus_state_e state, const char *reason_for_change, const char *ext_info, void *user_data);
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);
AUDIO_METHOD_PLAY_FILE_STOP,
AUDIO_METHOD_PLAY_DTMF,
AUDIO_METHOD_PLAY_DTMF_WITH_STREAM_INFO,
- AUDIO_METHOD_CLEAR_FOCUS, // Not original focus feature, only for tone/wav player internal focus usage.
+ AUDIO_METHOD_CLEAR_FOCUS, /* Not original focus feature, only for tone/wav player internal focus usage. */
AUDIO_METHOD_GET_BT_A2DP_STATUS,
AUDIO_METHOD_SET_PATH_FOR_ACTIVE_DEVICE,
AUDIO_METHOD_GET_CONNECTED_DEVICE_LIST,
AUDIO_METHOD_GET_ACQUIRED_FOCUS_STREAM_TYPE,
AUDIO_METHOD_ACQUIRE_FOCUS,
AUDIO_METHOD_RELEASE_FOCUS,
+ AUDIO_METHOD_UPDATE_STREAM_FOCUS_STATUS, /* It communicates with stream-manager to update focus status. */
AUDIO_METHOD_WATCH_FOCUS,
AUDIO_METHOD_UNWATCH_FOCUS,
int mm_sound_proxy_get_acquired_focus_stream_type(int focus_type, char **stream_type, int *option, char **ext_info);
int mm_sound_proxy_acquire_focus(int instance, int id, mm_sound_focus_type_e type, int option, const char *ext_info, bool is_for_session);
int mm_sound_proxy_release_focus(int instance, int id, mm_sound_focus_type_e type, int option, const char *ext_info, bool is_for_session);
+int mm_sound_proxy_update_stream_focus_status(int focus_id, unsigned int status);
int mm_sound_proxy_set_focus_watch_callback(int instance, int handle, mm_sound_focus_type_e type, mm_sound_focus_changed_watch_cb callback, bool is_for_session, void *user_data);
int mm_sound_proxy_unset_focus_watch_callback(int focus_tid, int handle, bool is_for_session);
#endif
}
g_focus_sound_handle[index].auto_reacquire = reacquisition;
+ debug_msg("[Client] set focus reacquisition(%d) for id(%d)\n", reacquisition, id);
cleanup:
MMSOUND_LEAVE_CRITICAL_SECTION(&g_index_mutex);
}
*reacquisition = g_focus_sound_handle[index].auto_reacquire;
+ debug_msg("[Client] get focus reacquisition(%d) for id(%d)\n", *reacquisition, id);
cleanup:
MMSOUND_LEAVE_CRITICAL_SECTION(&g_index_mutex);
return ret;
}
+int mm_sound_client_update_stream_focus_status(int id, unsigned int status)
+{
+ int ret = MM_ERROR_NONE;
+ debug_fenter();
+
+ if ((ret = mm_sound_proxy_update_stream_focus_status(id, status)) != MM_ERROR_NONE)
+ debug_error("[Client] failed to update stream focus status, ret[0x%x]", ret);
+
+ debug_fleave();
+ return ret;
+}
+
int mm_sound_client_set_focus_watch_callback(int pid, mm_sound_focus_type_e focus_type,
mm_sound_focus_changed_watch_cb callback,
bool is_for_session, void* user_data, int *id)
}
EXPORT_API
+int mm_sound_update_focus_status(int id, unsigned int status)
+{
+ int ret = MM_ERROR_NONE;
+
+ if ((ret = mm_sound_client_update_stream_focus_status(id, status)))
+ debug_error("failed to mm_sound_client_update_stream_focus_status(), id(%d), status(%d, ret[0x%x]\n",
+ id, status, ret);
+
+ return ret;
+}
+
+EXPORT_API
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 ret = MM_ERROR_NONE;
mm_sound_client_is_focus_cb_thread(g_thread_self(), &result);
if (!result) {
if ((ret = mm_sound_client_unset_focus_watch_callback(id)))
- debug_error("Could not unset focus watch callback, id(%d), ret = %x\n", id, ret);
+ debug_error("Could not unset focus watch callback, id(%d), ret[0x%x]\n", id, ret);
} else {
ret = mm_sound_client_execute_focus_func_in_main_context(IDLE_EVENT_TYPE_UNSET_FOCUS_WATCH_CB, id);
}
return ret;
}
+int mm_sound_proxy_update_stream_focus_status(int focus_id, unsigned int status)
+{
+ int ret = MM_ERROR_NONE;
+ char *reply = NULL;
+ GVariant *params = NULL, *result = NULL;
+
+ debug_fenter();
+
+ params = g_variant_new("(iu)", focus_id, status);
+ if (params) {
+ if ((ret = mm_sound_dbus_method_call_to(AUDIO_PROVIDER_STREAM_MANAGER, AUDIO_METHOD_UPDATE_STREAM_FOCUS_STATUS, params, &result)) != MM_ERROR_NONE) {
+ debug_error("dbus set volume by type failed");
+ goto cleanup;
+ }
+ } else {
+ debug_error("Construct Param for method call failed");
+ return MM_ERROR_SOUND_INTERNAL;
+ }
+
+ if (result) {
+ g_variant_get(result, "(&s)", &reply);
+ debug_log("reply : %s", reply);
+ if (!strcmp(reply, "STREAM_MANAGER_RETURN_ERROR"))
+ ret = MM_ERROR_SOUND_INTERNAL;
+ } else {
+ debug_error("reply null");
+ }
+
+cleanup:
+ if (result)
+ g_variant_unref(result);
+
+ debug_fleave();
+ return ret;
+}
+
int mm_sound_proxy_set_focus_watch_callback(int instance, int handle, mm_sound_focus_type_e type, mm_sound_focus_changed_watch_cb callback, bool is_for_session, void* userdata)
{
int ret = MM_ERROR_NONE;
Name: libmm-sound
Summary: MMSound Package contains client lib and sound_server binary
-Version: 0.10.97
+Version: 0.10.98
Release: 0
Group: System/Libraries
License: Apache-2.0