hwc: set need_target_window if there are no visible hwc_windows 54/164554/1
authorKonstantin Drabeniuk <k.drabeniuk@samsung.com>
Tue, 19 Dec 2017 15:36:29 +0000 (17:36 +0200)
committerKonstantin Drabeniuk <k.drabeniuk@samsung.com>
Tue, 19 Dec 2017 15:36:29 +0000 (17:36 +0200)
Change-Id: I575add73910c931159ccae5602d0b26c3fbbe34c
Signed-off-by: Konstantin Drabeniuk <k.drabeniuk@samsung.com>
src/tdm_exynos_display.c

index 62cdd89e90e4168067d8cb4ced2cee889612179b..9ec2e44aae7a02d25348831379afb44d5f7c349d 100644 (file)
@@ -1400,6 +1400,21 @@ _reset_hwc_windows_grabbed_layer_zpos(struct list_head *hwc_window_list)
        }
 }
 
+static int
+_get_number_of_visible_windows(struct list_head *hwc_window_list)
+{
+       int number = 0;
+       tdm_exynos_hwc_window_data *window = NULL;
+
+       LIST_FOR_EACH_ENTRY(window, hwc_window_list, link) {
+               if (window->client_type == TDM_COMPOSITION_NONE)
+                       continue;
+               number++;
+       }
+
+       return number;
+}
+
 static tdm_error
 _tdm_exynos_display_prepare_commit(tdm_exynos_output_data *output_data)
 {
@@ -1410,6 +1425,9 @@ _tdm_exynos_display_prepare_commit(tdm_exynos_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->hwc_window_list))
+               output_data->need_target_window = 1;
+
        /* set target hwc window */
        if (output_data->need_target_window) {
                layer = tdm_exynos_output_get_layer(output_data, primary_layer_zpos);
@@ -2189,21 +2207,6 @@ _comp_to_str(tdm_hwc_window_composition composition_type)
        return "unknown";
 }
 
-static int
-_get_number_of_visible_windows(struct list_head *hwc_window_list)
-{
-       int number = 0;
-       tdm_exynos_hwc_window_data *window = NULL;
-
-       LIST_FOR_EACH_ENTRY(window, hwc_window_list, link) {
-               if (window->client_type == TDM_COMPOSITION_NONE)
-                       continue;
-               number++;
-       }
-
-       return number;
-}
-
 static int
 _top_window_should_be_placed_on_fb_layer(struct list_head *hwc_window_list)
 {