X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=focus_server%2Fmm_sound_mgr_focus.c;h=982144a5df66fb9bfa9ec780cd146c57540ffad2;hb=4d3f5af7d4700710b0be3fdca1173743d3164605;hp=d614b781d3ac925153fbb8683f37a7f2597d38f7;hpb=9cb4fc0531ab4169c65c7e8642f37647892698d5;p=platform%2Fcore%2Fmultimedia%2Flibmm-sound.git diff --git a/focus_server/mm_sound_mgr_focus.c b/focus_server/mm_sound_mgr_focus.c index d614b78..982144a 100644 --- a/focus_server/mm_sound_mgr_focus.c +++ b/focus_server/mm_sound_mgr_focus.c @@ -191,7 +191,7 @@ static bool _check_session_node_exist(int pid) return false; } -static bool _check_session_watch_node_exist(int pid) +static bool _check_session_monitor_node_exist(int pid) { GList *list = NULL; focus_node_t *node = NULL; @@ -200,15 +200,11 @@ static bool _check_session_watch_node_exist(int pid) node = (focus_node_t *)list->data; if (node->pid != pid) continue; - if (!node->is_for_watch) - continue; - if (node->is_for_monitor) - continue; - if (node->is_for_session) + if (node->is_for_watch && node->is_for_session && node->is_for_monitor) return true; } - debug_msg("session watch node for pid[%d] does not exist", pid); + debug_msg("session monitor node for pid[%d] does not exist", pid); return false; } @@ -342,7 +338,7 @@ RELEASE: } } -/* session backward compatibility for monitor handle */ +/* session backward compatibility for monitor handle, it is for monitor callback of other nodes */ static int _mm_sound_mgr_focus_do_monitor_callback_outer(focus_type_e focus_type, focus_command_e command, focus_node_t *my_node, const _mm_sound_mgr_focus_param_t *param) { GList *list = NULL; @@ -359,12 +355,15 @@ static int _mm_sound_mgr_focus_do_monitor_callback_outer(focus_type_e focus_type CONTINUE_IF_LIST_DATA_IS_NULL(node, list); if (node == my_node) continue; + /* do not invoke monitor callback of mine */ + if (node->pid == my_node->pid) + continue; if (!node->is_for_watch || !node->is_for_monitor || !node->is_for_session) continue; if (!(node->status & focus_type)) continue; /* check if it meets the condition to trigger monitor callback */ - if (!_check_session_watch_node_exist(node->pid)) + if (!_check_session_monitor_node_exist(node->pid)) continue; _invoke_watch_callback(node, my_node->stream_type, focus_type, command, param);