tdm_output: execute mutex unlock before call direct commit handler
[platform/core/uifw/libtdm.git] / src / tdm_output.c
index 6516b6c..285887e 100644 (file)
@@ -429,7 +429,7 @@ tdm_output_cb_dpms(tdm_output *output_backend, tdm_output_dpms dpms, void *user_
        tdm_private_output *private_output = user_data;
        tdm_error ret;
 
-       TDM_INFO("output(%d) %s", private_output->pipe, tdm_status_str(dpms));
+       TDM_INFO("output(%d) %s", private_output->pipe, tdm_dpms_str(dpms));
 
        private_output->current_dpms_value = dpms;
        private_output->waiting_dpms_change = 0;
@@ -1427,6 +1427,7 @@ tdm_output_set_voutput_commit(tdm_voutput *voutput)
                ret = tdm_voutput_set_commit_func(private_voutput, _tdm_voutput_cb_commit);
                if (ret != TDM_ERROR_NONE) {
                        TDM_ERR("failed: tdm_voutput_set_commit_func");
+                       _pthread_mutex_unlock(&private_display->lock);
                        return ret;
                }
        }
@@ -1629,8 +1630,11 @@ tdm_output_commit_internal(tdm_output *output, int sync, tdm_output_commit_handl
 
        if (TDM_OUTPUT_DPMS_VSYNC_IS_OFF(dpms_value)) {
                TDM_WRN("dpms %s. Directly call commit handler instead of commit.", tdm_dpms_str(dpms_value));
-               if (func)
+               if (func) {
+                       _pthread_mutex_unlock(&private_display->lock);
                        func(output, 0, 0, 0, user_data);
+                       _pthread_mutex_lock(&private_display->lock);
+               }
        }
 
        return ret;