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;
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;
}
}
}
-/* 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;
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);