output: call output_change callbacks asynchronously
[platform/core/uifw/libtdm.git] / src / tdm_output.c
index 691d7bb..6543b7d 100644 (file)
@@ -259,6 +259,7 @@ static tdm_error
 _tdm_output_call_thread_cb_status(tdm_private_output *private_output, tdm_output_conn_status status)
 {
        tdm_thread_cb_output_status output_status;
+       pid_t caller_tid = syscall(SYS_gettid);
        tdm_error ret;
 
        memset(&output_status, 0, sizeof output_status);
@@ -266,7 +267,10 @@ _tdm_output_call_thread_cb_status(tdm_private_output *private_output, tdm_output
        output_status.base.length = sizeof output_status;
        output_status.base.object_stamp = private_output->stamp;
        output_status.base.data = NULL;
-       output_status.base.sync = 1;
+       if (tdm_thread_in_display_thread(caller_tid))
+               output_status.base.sync = 0;
+       else
+               output_status.base.sync = 1;
        output_status.status = status;
 
        ret = tdm_thread_cb_call(private_output, &output_status.base, 1);