From: Sangchul Lee Date: Wed, 27 Jul 2022 03:46:47 +0000 (+0900) Subject: fixup! webrtc_source: Fix source id allocation X-Git-Tag: submit/tizen/20220727.071902^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f091b9677fd588f1749d6c082df24da21601d4b7;p=platform%2Fcore%2Fapi%2Fwebrtc.git fixup! webrtc_source: Fix source id allocation It is fixed due to the some UTCs fail. Change-Id: I7ff6034dfb6e66aacadccf6b11b2dad07ae6ad47 --- diff --git a/include/webrtc_private.h b/include/webrtc_private.h index 7e988681..ba02efc3 100644 --- a/include/webrtc_private.h +++ b/include/webrtc_private.h @@ -465,6 +465,7 @@ typedef struct _webrtc_s { webrtc_gst_s gst; unsigned int payload_types; + unsigned int cur_max_source_id; webrtc_bundle_policy_e bundle_policy; diff --git a/src/webrtc_source.c b/src/webrtc_source.c index 77dede39..851bb570 100644 --- a/src/webrtc_source.c +++ b/src/webrtc_source.c @@ -837,19 +837,18 @@ void _source_slot_destroy_cb(gpointer data) static int __alloc_source_slot(webrtc_s *webrtc, int type, webrtc_gst_slot_s **source, gchar **name) { - static unsigned int id = 1; - RET_VAL_IF(webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL"); RET_VAL_IF(source == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "source is NULL"); RET_VAL_IF(name == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "name is NULL"); RET_VAL_IF(webrtc->gst.source_slots == NULL, WEBRTC_ERROR_INVALID_OPERATION, "source_slots is NULL"); - RET_VAL_IF(id >= MAX_SOURCE_NUM + 1, WEBRTC_ERROR_INVALID_OPERATION, "id exceeds %d", MAX_SOURCE_NUM); + RET_VAL_IF(g_hash_table_size(webrtc->gst.source_slots) >= MAX_SOURCE_NUM, WEBRTC_ERROR_INVALID_OPERATION, + "number of sources reached %d", MAX_SOURCE_NUM); /* name/source will be freed by function which is set to g_hash_table_new_full() */ - *name = g_strdup_printf("media_source_%u", id); + *name = g_strdup_printf("media_source_%u", ++webrtc->cur_max_source_id); *source = g_new0(webrtc_gst_slot_s, 1); - (*source)->id = id; + (*source)->id = webrtc->cur_max_source_id; if (type != WEBRTC_MEDIA_SOURCE_TYPE_NULL) (*source)->bin = GST_BIN(gst_bin_new(*name)); (*source)->type = type; @@ -857,7 +856,7 @@ static int __alloc_source_slot(webrtc_s *webrtc, int type, webrtc_gst_slot_s **s (*source)->av[AV_IDX_AUDIO].direction = (type == WEBRTC_MEDIA_SOURCE_TYPE_NULL) ? WEBRTC_TRANSCEIVER_DIRECTION_RECVONLY : WEBRTC_TRANSCEIVER_DIRECTION_SENDRECV; (*source)->av[AV_IDX_VIDEO].direction = (type == WEBRTC_MEDIA_SOURCE_TYPE_NULL) ? WEBRTC_TRANSCEIVER_DIRECTION_RECVONLY : WEBRTC_TRANSCEIVER_DIRECTION_SENDRECV; - LOG_DEBUG("webrtc[%p] source[%p, id:%u, type:%d, name:%s]", webrtc, *source, id++, type, *name); + LOG_DEBUG("webrtc[%p] source[%p, id:%u, type:%d, name:%s]", webrtc, *source, webrtc->cur_max_source_id, type, *name); return WEBRTC_ERROR_NONE; }