* @param[in] device_mask The mask value
* @param[out] device_list The list of connected devices
*
- * @remarks Use sound_manager_get_next_device() to get the first node of the list.
+ * @remarks @a device_list should be freed using sound_manager_free_device_list() since 3.0.\n
+ * Use sound_manager_get_next_device() to get the first node of the list.
*
* @return @c 0 on success,
* otherwise a negative error value
* @see sound_manager_get_device_id()
* @see sound_manager_get_device_name()
* @see sound_manager_get_device_state()
+ * @see sound_manager_free_device_list()
*/
int sound_manager_get_current_device_list(sound_device_mask_e device_mask, sound_device_list_h *device_list);
+/**
+ * @brief Frees device list and each item of list.
+ * @since_tizen 3.0
+ * @param[in] device_list The device list got with sound_manager_get_current_device_list.
+ *
+ * @remarks This API will deallocate not only device list itself but also each item.
+ *
+ * @return @c 0 on success,
+ * otherwise a negative error value
+ * @retval #SOUND_MANAGER_ERROR_NONE Success
+ * @retval #SOUND_MANAGER_ERROR_INVALID_PARAMETER Invalid parameter
+ *
+ *
+ * @see sound_manager_get_current_device_list()
+ * @see sound_manager_get_next_device()
+ * @see sound_manager_get_prev_device()
+ * @see sound_manager_get_device_type()
+ * @see sound_manager_get_device_io_direction()
+ * @see sound_manager_get_device_id()
+ * @see sound_manager_get_device_name()
+ * @see sound_manager_get_device_state()
+ */
+int sound_manager_free_device_list(sound_device_list_h device_list);
+
/**
* @brief Gets the next item of the device list.
* @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
* @see sound_manager_get_device_id()
* @see sound_manager_get_device_name()
* @see sound_manager_get_device_state()
+ * @see sound_manager_free_device_list()
*/
int sound_manager_get_next_device(sound_device_list_h device_list, sound_device_h *device);
* @see sound_manager_get_device_id()
* @see sound_manager_get_device_name()
* @see sound_manager_get_device_state()
+ * @see sound_manager_free_device_list()
*/
int sound_manager_get_prev_device(sound_device_list_h device_list, sound_device_h *device);
* @see sound_manager_get_device_id()
* @see sound_manager_get_device_name()
* @see sound_manager_get_device_state()
+ * @see sound_manager_free_device_list()
*/
int sound_manager_get_device_type(sound_device_h device, sound_device_type_e *type);
* @see sound_manager_get_device_id()
* @see sound_manager_get_device_name()
* @see sound_manager_get_device_state()
+ * @see sound_manager_free_device_list()
*/
int sound_manager_get_device_io_direction(sound_device_h device, sound_device_io_direction_e *io_direction);
* @see sound_manager_get_device_io_direction()
* @see sound_manager_get_device_name()
* @see sound_manager_get_device_state()
+ * @see sound_manager_free_device_list()
*/
int sound_manager_get_device_id(sound_device_h device, int *id);
* @see sound_manager_get_device_io_direction()
* @see sound_manager_get_device_id()
* @see sound_manager_get_device_state()
+ * @see sound_manager_free_device_list()
*/
int sound_manager_get_device_name(sound_device_h device, char **name);
* @see sound_manager_get_device_io_direction()
* @see sound_manager_get_device_id()
* @see sound_manager_get_device_name()
+ * @see sound_manager_free_device_list()
*/
int sound_manager_get_device_state(sound_device_h device, sound_device_state_e *state);
CURRENT_STATUS_SET_DEVICE_MASK,
CURRENT_STATUS_GET_DEVICE_MASK,
CURRENT_STATUS_GET_DEVICE_LIST,
+ CURRENT_STATUS_FREE_DEVICE_LIST,
CURRENT_STATUS_GET_DEVICE_NEXT,
CURRENT_STATUS_GET_DEVICE_PREV,
CURRENT_STATUS_SET_DEVICE_CONNECTED_CB,
g_menu_state = CURRENT_STATUS_GET_DEVICE_MASK;
else if (strncmp(cmd, "gl", 3) == 0)
g_menu_state = CURRENT_STATUS_GET_DEVICE_LIST;
+ else if (strncmp(cmd, "fl", 3) == 0)
+ g_menu_state = CURRENT_STATUS_FREE_DEVICE_LIST;
else if (strncmp(cmd, "gn", 3) == 0)
g_menu_state = CURRENT_STATUS_GET_DEVICE_NEXT;
else if (strncmp(cmd, "gp", 3) == 0)
g_print("-----------------------------------------------------------------------------------------\n");
g_print("sk. Set Devices Mask(default ALL)\t");
g_print("gk. Get Devices Mask\n");
- g_print("gl. Get Devices List\n");
+ g_print("gl. Get Devices List\t");
+ g_print("fl. Free Devices List\n");
g_print("gn. Get Next Device\t\t");
g_print("gp. Get Prev Device\n");
g_print("sd. Set Device Connenected CB\t\t");
g_print("*** press enter to get device mask\n");
else if (g_menu_state == CURRENT_STATUS_GET_DEVICE_LIST)
g_print("*** press enter to get device list\n");
+ else if (g_menu_state == CURRENT_STATUS_FREE_DEVICE_LIST)
+ g_print("*** press enter to free device list\n");
else if (g_menu_state == CURRENT_STATUS_GET_DEVICE_NEXT)
g_print("*** press enter to get next device from the list\n");
else if (g_menu_state == CURRENT_STATUS_GET_DEVICE_PREV)
reset_menu_state();
break;
}
+ case CURRENT_STATUS_FREE_DEVICE_LIST: {
+ int ret = SOUND_MANAGER_ERROR_NONE;
+ if (!(ret = sound_manager_free_device_list(g_device_list))) {
+ g_print("success to free device list\n");
+ g_device_list = NULL;
+ g_print("device list freed\n");
+ } else {
+ g_print("fail to free device list, ret[0x%x]\n", ret);
+ }
+ reset_menu_state();
+ break;
+ }
case CURRENT_STATUS_GET_DEVICE_NEXT: {
sound_device_h device;
sound_device_type_e type;