output: not allow adding handler twice 96/170996/2
authorBoram Park <boram1288.park@samsung.com>
Fri, 23 Feb 2018 06:38:12 +0000 (15:38 +0900)
committerBoram Park <boram1288.park@samsung.com>
Sun, 25 Feb 2018 23:27:57 +0000 (08:27 +0900)
Change-Id: I63ff48c75010263e96f765366d6a7f3ec5988dae

src/tdm_output.c

index ae4e359..ed860d3 100644 (file)
@@ -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 */