From 9b1c77e6656cfae72100331398ba16c30f90ad03 Mon Sep 17 00:00:00 2001 From: Eunhae Choi Date: Wed, 25 Oct 2017 09:04:52 +0900 Subject: [PATCH] [0.3.78] release pc in case of data_ch creation failure Change-Id: I1a457858f9ec070fdabd76cd20c2653fff96b24e --- include/player_msg.h | 5 +++-- packaging/capi-media-player.spec | 2 +- src/player.c | 11 +++++++++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/include/player_msg.h b/include/player_msg.h index 929afc3..81abec9 100644 --- a/include/player_msg.h +++ b/include/player_msg.h @@ -29,7 +29,7 @@ extern "C" { * @param[in] module The server side module infomation. * @param[in] fd socket fd */ -#define muse_core_send_module_addr(module, fd) \ +#define muse_core_send_module_addr(module, fd, ret) \ do {\ char *__sndMsg__; \ int __len__; \ @@ -40,7 +40,8 @@ extern "C" { muse_core_msg_free(__sndMsg__); \ if (__len__ <= 0) { \ LOGE("sending message failed"); \ - return PLAYER_ERROR_INVALID_OPERATION; \ + ret = PLAYER_ERROR_INVALID_OPERATION; \ + goto ERROR; \ } \ } while (0) diff --git a/packaging/capi-media-player.spec b/packaging/capi-media-player.spec index 3d09da1..9423d7d 100644 --- a/packaging/capi-media-player.spec +++ b/packaging/capi-media-player.spec @@ -1,6 +1,6 @@ Name: capi-media-player Summary: A Media Player API -Version: 0.3.77 +Version: 0.3.78 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/src/player.c b/src/player.c index f146569..8af69e5 100644 --- a/src/player.c +++ b/src/player.c @@ -1761,15 +1761,22 @@ int player_create(player_h * player) *player = (player_h) pc; if (player_msg_get_type(module_addr, ret_buf, POINTER)) { pc->cb_info->data_fd = muse_client_new_data_ch(); - muse_core_send_module_addr(module_addr, pc->cb_info->data_fd); + if (!muse_core_fd_is_valid(pc->cb_info->data_fd)) { + LOGE("Failed to get data_fd"); + ret = PLAYER_ERROR_INVALID_OPERATION; + goto ERROR; + } + + muse_core_send_module_addr(module_addr, pc->cb_info->data_fd, ret); LOGD("Data channel fd %d, muse module addr %p", pc->cb_info->data_fd, module_addr); } else { ret = PLAYER_ERROR_INVALID_OPERATION; goto ERROR; } SERVER_TIMEOUT(pc) = MAX_SERVER_TIME_OUT; /* will be update after prepare phase. */ - } else + } else { goto ERROR; + } #ifdef TIZEN_FEATURE_EVAS_RENDERER pc->cb_info->evas_info = g_new0(player_evas_info_s, 1); if (pc->cb_info->evas_info == NULL) { -- 2.7.4