From: Boram Park Date: Fri, 23 Feb 2018 06:38:12 +0000 (+0900) Subject: output: not allow adding handler twice X-Git-Tag: submit/tizen/20180227.014049~39 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d2069700e013e5f7f7eb0b18cd5fc637587e21f1;p=platform%2Fcore%2Fuifw%2Flibtdm.git output: not allow adding handler twice Change-Id: I63ff48c75010263e96f765366d6a7f3ec5988dae --- diff --git a/src/tdm_output.c b/src/tdm_output.c index ae4e359..ed860d3 100644 --- a/src/tdm_output.c +++ b/src/tdm_output.c @@ -314,13 +314,21 @@ tdm_output_add_change_handler(tdm_output *output, tdm_output_change_handler func, void *user_data) { - tdm_private_output_change_handler *change_handler; + tdm_private_output_change_handler *change_handler = NULL; OUTPUT_FUNC_ENTRY(); TDM_RETURN_VAL_IF_FAIL(func != NULL, TDM_ERROR_INVALID_PARAMETER); _pthread_mutex_lock(&private_display->lock); + LIST_FOR_EACH_ENTRY(change_handler, &private_output->change_handler_list, link) { + if (change_handler->func == func || change_handler->user_data == user_data) { + TDM_ERR("can't add twice"); + _pthread_mutex_unlock(&private_display->lock); + return TDM_ERROR_BAD_REQUEST; + } + } + change_handler = calloc(1, sizeof(tdm_private_output_change_handler)); if (!change_handler) { /* LCOV_EXCL_START */