commentt
authorSooChan Lim <sc1.lim@samsung.com>
Thu, 1 Feb 2018 11:46:26 +0000 (20:46 +0900)
committerSooChan Lim <sc1.lim@samsung.com>
Thu, 1 Feb 2018 11:54:41 +0000 (20:54 +0900)
Change-Id: Ie31b3e617102332ab92b555520ee9932def59f15

src/bin/e_output_hwc.c
src/bin/e_output_hwc_windows.c
src/bin/e_output_hwc_windows.h

index f409c6c28a12d4fde5225421b9f06522fdb7dd4c..e64472d51c7c37de5b2545f8134b0350d66d3514 100644 (file)
@@ -84,36 +84,26 @@ e_output_hwc_apply(E_Output_Hwc *output_hwc)
 {
    EINA_SAFETY_ON_NULL_RETURN(output_hwc);
    EINA_SAFETY_ON_NULL_RETURN(output_hwc->output);
-   if (e_output_hwc_policy_get(output_hwc) == E_OUTPUT_HWC_POLICY_NONE) return;
+   if (e_output_hwc_policy_get(output_hwc) == E_OUTPUT_HWC_POLICY_NONE ||
+       e_output_hwc_policy_get(output_hwc) == E_OUTPUT_HWC_POLICY_WINDOWS) return;
 
-   if (e_output_hwc_policy_get(output_hwc) == E_OUTPUT_HWC_POLICY_PLANES)
+   if (e_output_hwc_deactive_get(output_hwc))
      {
-        if (e_output_hwc_deactive_get(output_hwc))
-          {
-             if (output_hwc->hwc_mode != E_OUTPUT_HWC_MODE_NONE)
-               e_output_hwc_planes_end(output_hwc, "deactive set.");
-             return;
-          }
-
-        if (!e_output_hwc_planes_usable(output_hwc))
-          {
-             e_output_hwc_planes_end(output_hwc, __FUNCTION__);
-             return;
-          }
-
-        if (output_hwc->hwc_mode == E_OUTPUT_HWC_MODE_NONE)
-          e_output_hwc_planes_begin(output_hwc);
-        else
-          e_output_hwc_planes_changed(output_hwc);
+        if (output_hwc->hwc_mode != E_OUTPUT_HWC_MODE_NONE)
+          e_output_hwc_planes_end(output_hwc, "deactive set.");
+        return;
      }
-#if 0
-   else
+
+   if (!e_output_hwc_planes_usable(output_hwc))
      {
-        /* evaluate which e_output_hwc_window will be composited by hwc and wich by GLES */
-        if (!e_output_hwc_windows_evaluate(output_hwc))
-           ERR("fail to e_output_hwc_windows_evaluate.");
+        e_output_hwc_planes_end(output_hwc, __FUNCTION__);
+        return;
      }
-#endif
+
+   if (output_hwc->hwc_mode == E_OUTPUT_HWC_MODE_NONE)
+     e_output_hwc_planes_begin(output_hwc);
+   else
+     e_output_hwc_planes_changed(output_hwc);
 }
 
 EINTERN E_Output_Hwc_Mode
index 90201ef34c184cb43845b6ae44279a57607a3c8e..d41142d57a072d2fe1e178357679db5c853a716a 100644 (file)
@@ -1320,7 +1320,7 @@ e_output_hwc_windows_deinit(void)
    // TDOO:
    ;;;
 }
-
+#if 0
 static Eina_Bool
 _e_output_hwc_windows_uncomplete_transition_check(E_Output_Hwc *output_hwc)
 {
@@ -1490,6 +1490,7 @@ _e_output_hwc_windows_transition_update(E_Output_Hwc *output_hwc)
           }
      }
 }
+#endif
 
 static Eina_Bool
 _e_output_hwc_windows_composition_evaulate(E_Output_Hwc *output_hwc)
@@ -1554,10 +1555,9 @@ _e_output_hwc_windows_states_update(E_Output_Hwc *output_hwc)
 }
 
 /* evaluate the hwc_windows */
-EINTERN Eina_Bool
-e_output_hwc_windows_evaluate(E_Output_Hwc *output_hwc)
+static Eina_Bool
+_e_output_hwc_windows_evaluate(E_Output_Hwc *output_hwc)
 {
-   Eina_Bool ret = EINA_FALSE;
    E_Output_Hwc_Mode hwc_mode = E_OUTPUT_HWC_MODE_NONE;
    E_Hwc_Window *target_window = (E_Hwc_Window *)output_hwc->target_hwc_window;
 
@@ -1567,7 +1567,7 @@ e_output_hwc_windows_evaluate(E_Output_Hwc *output_hwc)
    _e_output_hwc_windows_states_update(output_hwc);
 
    /* update the state transition */
-   _e_output_hwc_windows_transition_update(output_hwc);
+   //_e_output_hwc_windows_transition_update(output_hwc);
 
    /* evaulate the compositions with the states*/
    if (_e_output_hwc_windows_composition_evaulate(output_hwc))
@@ -1580,11 +1580,6 @@ e_output_hwc_windows_evaluate(E_Output_Hwc *output_hwc)
 
    /* decide the E_OUTPUT_HWC_MODE */
    hwc_mode = _e_output_hwc_windows_hwc_mode_get(output_hwc);
-   if (hwc_mode == E_OUTPUT_HWC_MODE_HYBRID || hwc_mode == E_OUTPUT_HWC_MODE_NONE)
-     e_hwc_window_state_set(target_window, E_HWC_WINDOW_STATE_DEVICE);
-   else
-     e_hwc_window_state_set(target_window, E_HWC_WINDOW_STATE_NONE);
-
    if (output_hwc->hwc_mode != hwc_mode)
      {
         if (hwc_mode == E_OUTPUT_HWC_MODE_HYBRID || hwc_mode == E_OUTPUT_HWC_MODE_NONE)
@@ -1595,8 +1590,6 @@ e_output_hwc_windows_evaluate(E_Output_Hwc *output_hwc)
         output_hwc->hwc_mode  = hwc_mode;
      }
 
-   ret = EINA_TRUE;
-
 #if DBG_EVALUATE
    if (hwc_mode == E_OUTPUT_HWC_MODE_NONE)
      ELOGF("HWC-WINS", " HWC_MODE is NONE composition.", NULL, NULL);
@@ -1606,7 +1599,21 @@ e_output_hwc_windows_evaluate(E_Output_Hwc *output_hwc)
      ELOGF("HWC-WINS", " HWC_MODE is FULL HW composition.", NULL, NULL);
 #endif
 
-   return ret;
+   /* set the state of the target_window */
+   if (hwc_mode == E_OUTPUT_HWC_MODE_HYBRID || hwc_mode == E_OUTPUT_HWC_MODE_NONE)
+     e_hwc_window_state_set(target_window, E_HWC_WINDOW_STATE_DEVICE);
+   else
+     e_hwc_window_state_set(target_window, E_HWC_WINDOW_STATE_NONE);
+
+    /* target state is DEVICE and no surface, then return false */
+    if (e_hwc_window_state_get(target_window) == E_HWC_WINDOW_STATE_DEVICE &&
+        target_window->tsurface == NULL)
+      {
+         ELOGF("HWC-WINS", "Need target_window buffer.", NULL, NULL);
+         return EINA_FALSE;
+      }
+
+   return EINA_TRUE;
 }
 
 EINTERN const Eina_List *
@@ -1686,7 +1693,6 @@ EINTERN Eina_Bool
 e_output_hwc_windows_commit(E_Output_Hwc *output_hwc)
 {
    E_Hwc_Window *hwc_window = NULL;
-   E_Hwc_Window *target_window = NULL;
    Eina_List *l;
    E_Output *output = NULL;
    tdm_error error = TDM_ERROR_NONE;
@@ -1718,17 +1724,12 @@ e_output_hwc_windows_commit(E_Output_Hwc *output_hwc)
    if (_e_output_hwc_windows_update_changes(output_hwc) ||
        output_hwc->hwc_mode == E_OUTPUT_HWC_MODE_NONE)
      {
-        if (!e_output_hwc_windows_evaluate(output_hwc))
-          ERR("failed e_output_hwc_windows_evaluate");
-
-        /* target is on and no surface, then return false */
-        target_window = (E_Hwc_Window *)output_hwc->target_hwc_window;
-        if (e_hwc_window_state_get(target_window) == E_HWC_WINDOW_STATE_DEVICE &&
-            target_window->tsurface == NULL)
+        if (!_e_output_hwc_windows_evaluate(output_hwc))
           {
+             ELOGF("HWC-WINS", "Evaluation is not completed. No Commit at this time.", NULL, NULL);
              /* update the previous states. */
              _e_output_hwc_windows_prev_states_update(output_hwc);
-             return EINA_FALSE;
+             return EINA_TRUE;
           }
 
         EINA_LIST_FOREACH(output_hwc->hwc_windows, l, hwc_window)
index 84bb93f6403cac20a47a00a6c3e127a087e37b32..21fd69ee5d1004ae92fb5f3a0a2e5b4a5e411759 100644 (file)
@@ -6,7 +6,6 @@
 EINTERN Eina_Bool            e_output_hwc_windows_init(E_Output_Hwc *output_hwc);
 EINTERN void                 e_output_hwc_windows_deinit(void);
 
-EINTERN Eina_Bool            e_output_hwc_windows_evaluate(E_Output_Hwc *output_hwc);
 EINTERN const Eina_List     *e_output_hwc_windows_get(E_Output_Hwc *output_hwc);
 EINTERN Eina_Bool            e_output_hwc_windows_render(E_Output_Hwc *output_hwc);
 EINTERN Eina_Bool            e_output_hwc_windows_commit(E_Output_Hwc *output_hwc);