X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=mm_sound_focus.c;h=3ad33b623461d900e577f70586a750263fcb069e;hb=0dff6d8f3094061e287d01f4468d58539144ae95;hp=1bbee1a590418ed431f8eef68256caa5522a185f;hpb=53eb66817c8f8bc6e4c9467b9db36f4b3b9c7dab;p=platform%2Fcore%2Fmultimedia%2Flibmm-sound.git diff --git a/mm_sound_focus.c b/mm_sound_focus.c index 1bbee1a..3ad33b6 100644 --- a/mm_sound_focus.c +++ b/mm_sound_focus.c @@ -35,7 +35,7 @@ if (ret) \ return ret; \ if (result) { \ - debug_error("it might be called in the thread of focus callback, it is not allowed\n"); \ + debug_error("it might be called in the thread of focus callback, it is not allowed"); \ return MM_ERROR_SOUND_INVALID_OPERATION; \ } \ } \ @@ -51,7 +51,7 @@ int mm_sound_focus_set_session_interrupt_callback(mm_sound_focus_session_interru if (!callback) return MM_ERROR_INVALID_ARGUMENT; - ret = mm_sound_client_set_session_interrupt_callback (callback, user_data); + ret = mm_sound_client_set_session_interrupt_callback(callback, user_data); debug_fleave(); @@ -66,9 +66,9 @@ int mm_sound_focus_unset_session_interrupt_callback(void) RETURN_ERROR_IF_FOCUS_CB_THREAD(g_thread_self()); - ret = mm_sound_client_unset_session_interrupt_callback (); + 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_error("Failed to mm_sound_client_unset_session_interrupt_callback(), ret[0x%x]", ret); } debug_fleave(); @@ -87,7 +87,7 @@ int mm_sound_focus_get_id(int *id) ret = mm_sound_client_get_unique_id(id); if (ret) { - debug_error("Failed to mm_sound_client_get_unique_id(), ret[0x%x]\n", ret); + debug_error("Failed to mm_sound_client_get_unique_id(), ret[0x%x]", ret); } debug_fleave(); @@ -105,7 +105,7 @@ int mm_sound_focus_is_cb_thread(bool *result) ret = mm_sound_client_is_focus_cb_thread(g_thread_self(), result); if (!ret) { if (*result) - debug_msg("it might be called in the thread of focus callback\n"); + debug_msg("it might be called in the thread of focus callback"); } debug_fleave(); @@ -123,13 +123,13 @@ int mm_sound_register_focus(int id, const char *stream_type, mm_sound_focus_chan RETURN_ERROR_IF_FOCUS_CB_THREAD(g_thread_self()); if (id < 0 || callback == NULL) { - debug_error("argument is not valid\n"); + debug_error("argument is not valid"); return MM_ERROR_INVALID_ARGUMENT; } - ret = mm_sound_client_register_focus(id, getpid(), stream_type, callback, false, user_data); + ret = mm_sound_client_register_focus(id, getpid(), stream_type, false, callback, user_data); if (ret) { - debug_error("Could not register focus, ret[0x%x]\n", ret); + debug_error("Could not register focus, ret[0x%x]", ret); } debug_fleave(); @@ -147,13 +147,13 @@ int mm_sound_register_focus_for_session(int id, int pid, const char *stream_type RETURN_ERROR_IF_FOCUS_CB_THREAD(g_thread_self()); if (id < 0 || callback == NULL) { - debug_error("argument is not valid\n"); + debug_error("argument is not valid"); return MM_ERROR_INVALID_ARGUMENT; } - ret = mm_sound_client_register_focus(id, pid, stream_type, callback, true, user_data); + ret = mm_sound_client_register_focus(id, pid, stream_type, true, callback, user_data); if (ret) { - debug_error("Could not register focus for session, ret[0x%x]\n", ret); + debug_error("Could not register focus for session, ret[0x%x]", ret); } debug_fleave(); @@ -170,14 +170,14 @@ int mm_sound_unregister_focus(int id) debug_fenter(); if (id < 0) { - debug_error("argument is not valid\n"); + debug_error("argument is not valid"); return MM_ERROR_INVALID_ARGUMENT; } mm_sound_client_is_focus_cb_thread(g_thread_self(), &result); if (!result) { if ((ret = mm_sound_client_unregister_focus(id))) - debug_error("Could not unregister focus, ret = %x\n", ret); + debug_error("Could not unregister focus, ret = %x", ret); } else { ret = mm_sound_client_execute_focus_func_in_main_context(IDLE_EVENT_TYPE_UNREGISTER_FOCUS, id); } @@ -195,12 +195,12 @@ int mm_sound_set_focus_reacquisition(int id, bool reacquisition) debug_fenter(); if (id < 0) { - debug_error("argument is not valid\n"); + debug_error("argument is not valid"); return MM_ERROR_INVALID_ARGUMENT; } if ((ret = mm_sound_client_set_focus_reacquisition(id, reacquisition, false))) - debug_error("Could not set focus reacquisition, ret[0x%x]\n", ret); + debug_error("Could not set focus reacquisition, ret[0x%x]", ret); debug_fleave(); @@ -215,12 +215,12 @@ int mm_sound_set_focus_reacquisition_for_session(int id, bool reacquisition) debug_fenter(); if (id < 0) { - debug_error("argument is not valid\n"); + debug_error("argument is not valid"); return MM_ERROR_INVALID_ARGUMENT; } if ((ret = mm_sound_client_set_focus_reacquisition(id, reacquisition, true))) - debug_error("Could not set focus reacquisition, ret[0x%x]\n", ret); + debug_error("Could not set focus reacquisition, ret[0x%x]", ret); debug_fleave(); @@ -235,13 +235,13 @@ int mm_sound_get_focus_reacquisition(int id, bool *reacquisition) debug_fenter(); if (id < 0 || !reacquisition) { - debug_error("argument is not valid\n"); + debug_error("argument is not valid"); return MM_ERROR_INVALID_ARGUMENT; } ret = mm_sound_client_get_focus_reacquisition(id, reacquisition); if (ret) { - debug_error("Could not get focus reacquisition, ret[0x%x]\n", ret); + debug_error("Could not get focus reacquisition, ret[0x%x]", ret); } debug_fleave(); @@ -257,13 +257,13 @@ int mm_sound_get_stream_type_of_acquired_focus(int focus_type, char **stream_typ debug_fenter(); if (stream_type == NULL) { - debug_error("argument is not valid\n"); + debug_error("argument is not valid"); return MM_ERROR_INVALID_ARGUMENT; } ret = mm_sound_client_get_acquired_focus_stream_type(focus_type, stream_type, option, ext_info); if (ret) { - debug_error("Could not get acquired focus stream type, ret[0x%x]\n", ret); + debug_error("Could not get acquired focus stream type, ret[0x%x]", ret); } debug_fleave(); @@ -281,17 +281,17 @@ int mm_sound_acquire_focus(int id, mm_sound_focus_type_e focus_type, const char RETURN_ERROR_IF_FOCUS_CB_THREAD(g_thread_self()); if (id < 0) { - debug_error("argument is not valid\n"); + debug_error("argument is not valid"); return MM_ERROR_INVALID_ARGUMENT; } if (focus_type < FOCUS_FOR_PLAYBACK || focus_type > FOCUS_FOR_BOTH) { - debug_error("argument is not valid\n"); + debug_error("argument is not valid"); return MM_ERROR_INVALID_ARGUMENT; } ret = mm_sound_client_acquire_focus(id, focus_type, 0, ext_info); if (ret) { - debug_error("Could not acquire focus, ret[0x%x]\n", ret); + debug_error("Could not acquire focus, ret[0x%x]", ret); } debug_fleave(); @@ -309,17 +309,17 @@ int mm_sound_release_focus(int id, mm_sound_focus_type_e focus_type, const char RETURN_ERROR_IF_FOCUS_CB_THREAD(g_thread_self()); if (id < 0) { - debug_error("argument is not valid\n"); + debug_error("argument is not valid"); return MM_ERROR_INVALID_ARGUMENT; } if (focus_type < FOCUS_FOR_PLAYBACK || focus_type > FOCUS_FOR_BOTH) { - debug_error("argument is not valid\n"); + debug_error("argument is not valid"); return MM_ERROR_INVALID_ARGUMENT; } ret = mm_sound_client_release_focus(id, focus_type, 0, ext_info); if (ret) { - debug_error("Could not release focus, ret[0x%x]\n", ret); + debug_error("Could not release focus, ret[0x%x]", ret); } debug_fleave(); @@ -334,26 +334,24 @@ int mm_sound_acquire_focus_with_option(int id, mm_sound_focus_type_e focus_type, debug_fenter(); - RETURN_ERROR_IF_FOCUS_CB_THREAD(g_thread_self()); - if (id < 0) { - debug_error("id is not valid\n"); + debug_error("id is not valid"); return MM_ERROR_INVALID_ARGUMENT; } if (option < 0) { - debug_error("option is not valid\n"); + debug_error("option is not valid"); return MM_ERROR_INVALID_ARGUMENT; } if (focus_type < FOCUS_FOR_PLAYBACK || focus_type > FOCUS_FOR_BOTH) { - debug_error("focus type is not valid\n"); + debug_error("focus type is not valid"); return MM_ERROR_INVALID_ARGUMENT; } ret = mm_sound_client_acquire_focus(id, focus_type, option, ext_info); if (ret) { - debug_error("Could not acquire focus, ret[0x%x]\n", ret); + debug_error("Could not acquire focus, ret[0x%x]", ret); } debug_fleave(); @@ -368,26 +366,24 @@ int mm_sound_release_focus_with_option(int id, mm_sound_focus_type_e focus_type, debug_fenter(); - RETURN_ERROR_IF_FOCUS_CB_THREAD(g_thread_self()); - if (id < 0) { - debug_error("id is not valid\n"); + debug_error("id is not valid"); return MM_ERROR_INVALID_ARGUMENT; } if (option < 0) { - debug_error("option is not valid\n"); + debug_error("option is not valid"); return MM_ERROR_INVALID_ARGUMENT; } if (focus_type < FOCUS_FOR_PLAYBACK || focus_type > FOCUS_FOR_BOTH) { - debug_error("focus type is not valid\n"); + debug_error("focus type is not valid"); return MM_ERROR_INVALID_ARGUMENT; } ret = mm_sound_client_release_focus(id, focus_type, option, ext_info); if (ret) { - debug_error("Could not release focus, ret[0x%x]\n", ret); + debug_error("Could not release focus, ret[0x%x]", ret); } debug_fleave(); @@ -401,13 +397,24 @@ 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", + debug_error("failed to mm_sound_client_update_stream_focus_status(), id(%d), status(%d, ret[0x%x]", id, status, ret); return ret; } EXPORT_API +int mm_sound_deliver_focus(int src_id, int dst_id, mm_sound_focus_type_e focus_type) +{ + int ret = MM_ERROR_NONE; + + if ((ret = mm_sound_client_deliver_focus(getpid(), src_id, dst_id, focus_type))) + debug_error("failed to mm_sound_client_deliver_focus(), ret[0x%x]", 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; @@ -417,12 +424,12 @@ int mm_sound_set_focus_watch_callback(mm_sound_focus_type_e focus_type, mm_sound RETURN_ERROR_IF_FOCUS_CB_THREAD(g_thread_self()); if (callback == NULL || id == NULL) { - debug_error("argument is not valid\n"); + debug_error("argument is not valid"); return MM_ERROR_INVALID_ARGUMENT; } - ret = mm_sound_client_set_focus_watch_callback(getpid(), focus_type, callback, false, user_data, id); + ret = mm_sound_client_set_focus_watch_callback(getpid(), focus_type, false, false, callback, user_data, id); if (ret) { - debug_error("Could not set focus watch callback, ret[0x%x]\n", ret); + debug_error("Could not set focus watch callback, ret[0x%x]", ret); } debug_fleave(); @@ -440,12 +447,35 @@ int mm_sound_set_focus_watch_callback_for_session(int pid, mm_sound_focus_type_e RETURN_ERROR_IF_FOCUS_CB_THREAD(g_thread_self()); if (callback == NULL || id == NULL) { - debug_error("argument is not valid\n"); + debug_error("argument is not valid"); return MM_ERROR_INVALID_ARGUMENT; } - ret = mm_sound_client_set_focus_watch_callback(pid, focus_type, callback, true, user_data, id); + ret = mm_sound_client_set_focus_watch_callback(pid, focus_type, true, false, callback, user_data, id); if (ret) { - debug_error("Could not set focus watch callback, ret[0x%x]\n", ret); + debug_error("Could not set focus watch callback, ret[0x%x]", ret); + } + + debug_fleave(); + + return ret; +} + +EXPORT_API +int mm_sound_set_focus_watch_callback_for_session_monitor(int pid, mm_sound_focus_type_e focus_type, mm_sound_focus_changed_watch_cb callback, void *user_data, int *id) +{ + int ret = MM_ERROR_NONE; + + debug_fenter(); + + RETURN_ERROR_IF_FOCUS_CB_THREAD(g_thread_self()); + + if (callback == NULL || id == NULL) { + debug_error("argument is not valid"); + return MM_ERROR_INVALID_ARGUMENT; + } + ret = mm_sound_client_set_focus_watch_callback(pid, focus_type, true, true, callback, user_data, id); + if (ret) { + debug_error("Could not set focus watch callback, ret[0x%x]", ret); } debug_fleave(); @@ -462,16 +492,22 @@ int mm_sound_unset_focus_watch_callback(int id) debug_fenter(); if (id < 0) { - debug_error("argument is not valid\n"); + debug_error("argument is not valid"); return MM_ERROR_INVALID_ARGUMENT; } + if ((ret = mm_sound_client_request_unset_focus_watch_callback(id))) { + debug_error("failed to mm_sound_client_request_unset_focus_watch_callback, ret[0x%x]", ret); + return ret; + } + 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[0x%x]\n", id, ret); + debug_error("Could not unset focus watch callback, id(%d), ret[0x%x]", id, ret); } else { ret = mm_sound_client_execute_focus_func_in_main_context(IDLE_EVENT_TYPE_UNSET_FOCUS_WATCH_CB, id); + debug_msg("mm_sound_client_execute_focus_func_in_main_context() is called, id(%d), ret[0x%x]", id, ret); } debug_fleave();