output: return current_dpms_value if commit_per_vblank is false 13/160413/1
authorBoram Park <boram1288.park@samsung.com>
Thu, 16 Nov 2017 04:53:25 +0000 (13:53 +0900)
committerBoram Park <boram1288.park@samsung.com>
Thu, 16 Nov 2017 05:33:47 +0000 (14:33 +0900)
To use the stored value to reduce the interaction between frontend and backend.
If commit_per_vblank is true, tdm_output_get_dpms_internal calls backend's
output_get_dpms always function to get dpms status. Some backends doesn't
work properly for DPMS.

In future, we'd better use new env instead of using commit_per_vblank variable
to distinguish whether we use the stored value or backend's output_get_dpms.

Change-Id: I464e5d0dee98985e657f6db636b4386258ffaa8e

src/tdm_output.c

index d445914..2307b7a 100644 (file)
@@ -919,13 +919,8 @@ tdm_output_commit_internal(tdm_output *output, int sync, tdm_output_commit_handl
                return TDM_ERROR_NOT_IMPLEMENTED;
        }
 
-       /* TODO: this is ugly. But before using tdm_output_get_dpms_internal, we have
-        * to check if all backends's DPMS operation has no problem.
-        */
-       if (private_output->commit_per_vblank)
-               tdm_output_get_dpms_internal(output, &dpms_value);
-       else
-               dpms_value = private_output->current_dpms_value;
+       ret = tdm_output_get_dpms_internal(output, &dpms_value);
+       TDM_RETURN_VAL_IF_FAIL(ret == TDM_ERROR_NONE, ret);
 
        if (dpms_value == TDM_OUTPUT_DPMS_ON) {
                if (func) {
@@ -1283,6 +1278,16 @@ tdm_output_get_dpms_internal(tdm_output *output, tdm_output_dpms *dpms_value)
 
        TDM_RETURN_VAL_IF_FAIL(private_output != NULL, TDM_ERROR_INVALID_PARAMETER);
 
+       /* TODO: this is ugly. But before calling backend's output_get_dpms(), we have
+        * to check if all backends's DPMS operation has no problem. In future, we'd
+        * better use new env instead of using commit_per_vblank variable to distinguish
+        * whether we use the stored value or backend's output_get_dpms.
+        */
+       if (!private_output->commit_per_vblank) {
+               *dpms_value = private_output->current_dpms_value;
+               return TDM_ERROR_NONE;
+       }
+
        func_output = &private_display->func_output;
 
        if (!func_output->output_get_dpms) {