hwc: set need_target_window if there are no visible hwc_windows 93/164493/1
authorKonstantin Drabeniuk <k.drabeniuk@samsung.com>
Tue, 19 Dec 2017 09:05:46 +0000 (11:05 +0200)
committerKonstantin Drabeniuk <k.drabeniuk@samsung.com>
Tue, 19 Dec 2017 09:05:46 +0000 (11:05 +0200)
Change-Id: If26c572f5080bfb513edd0064a47716a0fb5e061
Signed-off-by: Konstantin Drabeniuk <k.drabeniuk@samsung.com>
src/tdm_sprd_display.c

index 05c90d1..02dd007 100644 (file)
@@ -1193,6 +1193,24 @@ sprd_output_set_vblank_handler(tdm_output *output, tdm_output_vblank_handler fun
        return TDM_ERROR_NONE;
 }
 
+static int
+_get_number_of_visible_windows(tdm_sprd_output_data *sprd_output)
+{
+       int number = 0;
+       tdm_sprd_hwc_window_data *window = NULL;
+
+       RETURN_VAL_IF_FAIL(sprd_output, 0);
+
+       LIST_FOR_EACH_ENTRY(window, &sprd_output->hwc_window_list, link) {
+               if (window->client_type == TDM_COMPOSITION_NONE)
+                       continue;
+
+               number++;
+       }
+
+       return number;
+}
+
 static tdm_error
 _tdm_sprd_display_prepare_commit(tdm_sprd_output_data *output_data) {
 
@@ -1202,6 +1220,9 @@ _tdm_sprd_display_prepare_commit(tdm_sprd_output_data *output_data) {
 
        RETURN_VAL_IF_FAIL(output_data->need_validate == 0, TDM_ERROR_OPERATION_FAILED);
 
+       if (!_get_number_of_visible_windows(output_data))
+               output_data->need_target_buffer = 1;
+
        /* set target hwc window */
        if (output_data->need_target_buffer) {
                layer = _sprd_output_get_layer(output_data, i--);
@@ -1902,24 +1923,6 @@ _comp_to_str(tdm_hwc_window_composition composition_type)
        return "unknown";
 }
 
-static int
-_get_number_of_visible_windows(tdm_sprd_output_data *sprd_output)
-{
-       int number = 0;
-       tdm_sprd_hwc_window_data *window = NULL;
-
-       RETURN_VAL_IF_FAIL(sprd_output, 0);
-
-       LIST_FOR_EACH_ENTRY(window, &sprd_output->hwc_window_list, link) {
-               if (window->client_type == TDM_COMPOSITION_NONE)
-                       continue;
-
-               number++;
-       }
-
-       return number;
-}
-
 tdm_error
 sprd_output_hwc_validate(tdm_output *output, uint32_t *num_types)
 {