EINA_SAFETY_ON_NULL_RETURN_VAL(buff, TDM_ERROR_BAD_REQUEST);
if (_is_video_hwc_windows(layer->video))
- layer->cur_tsurface = buff; // set the buffer to the tdm at the e_hwc_window_update();
+ layer->cur_tsurface = buff; // set the buffer to the tdm at the e_hwc_window_buffer_update();
else
ret = tdm_layer_set_buffer(layer->tdm_layer, buff);
EINA_SAFETY_ON_NULL_RETURN_VAL(hwc_window, TDM_ERROR_OPERATION_FAILED);
e_hwc_window_state_set(hwc_window, E_HWC_WINDOW_STATE_NONE);
- layer->cur_tsurface = NULL; // set the buffer to the tdm at the e_hwc_window_update();
+ layer->cur_tsurface = NULL; // set the buffer to the tdm at the e_hwc_window_buffer_update();
ret = TDM_ERROR_NONE;
}
}
EINTERN Eina_Bool
-e_hwc_window_update(E_Hwc_Window *hwc_window)
+e_hwc_window_compsition_update(E_Hwc_Window *hwc_window)
{
- tbm_surface_h tsurface = NULL;
tdm_hwc_window *thwc_window;
tdm_hwc_window_composition composition_type;
tdm_error error;
- Eina_Bool result;
EINA_SAFETY_ON_NULL_RETURN_VAL(hwc_window, EINA_FALSE);
if (e_hwc_window_is_target(hwc_window))
{
- ERR("HWC-WINS: target window cannot update at e_hwc_window_update.");
+ ERR("HWC-WINS: target window cannot update at e_hwc_window_compsition_update.");
return EINA_FALSE;
}
error = tdm_hwc_window_set_composition_type(hwc_window->thwc_window, composition_type);
EINA_SAFETY_ON_TRUE_RETURN_VAL(error != TDM_ERROR_NONE, EINA_FALSE);
+ return EINA_TRUE;
+}
+
+EINTERN Eina_Bool
+e_hwc_window_buffer_update(E_Hwc_Window *hwc_window)
+{
+ tbm_surface_h tsurface = NULL;
+ tdm_hwc_window *thwc_window;
+ tdm_error error;
+ Eina_Bool result;
+
+ thwc_window = hwc_window->thwc_window;
+ EINA_SAFETY_ON_NULL_RETURN_VAL(thwc_window, EINA_FALSE);
+
tsurface = hwc_window->tsurface;
if (tsurface)
{
}
/* set buffer */
- error = tdm_hwc_window_set_buffer(hwc_window->thwc_window, hwc_window->tsurface);
+ error = tdm_hwc_window_set_buffer(thwc_window, hwc_window->tsurface);
EINA_SAFETY_ON_TRUE_RETURN_VAL(error != TDM_ERROR_NONE, EINA_FALSE);
return EINA_TRUE;
}
static Eina_Bool
-_e_output_hwc_windows_update(E_Output_Hwc *output_hwc)
+_e_output_hwc_windows_compsitions_update(E_Output_Hwc *output_hwc)
+{
+ const Eina_List *l;
+ E_Hwc_Window *hwc_window;
+
+ EINA_LIST_FOREACH(e_output_hwc_windows_get(output_hwc), l, hwc_window)
+ {
+ if (e_hwc_window_is_target(hwc_window)) continue;
+
+ if (!e_hwc_window_compsition_update(hwc_window))
+ {
+ ERR("HWC-WINS: cannot update E_Hwc_Window(%p)", hwc_window);
+ return EINA_FALSE;
+ }
+ }
+
+#if DBG_EVALUATE
+ ELOGF("HWC-WINS", " Request HWC Validation to TDM HWC:", NULL, NULL);
+ _e_output_hwc_windows_status_print(output_hwc, EINA_FALSE);
+#endif
+
+ return EINA_TRUE;
+}
+
+static Eina_Bool
+_e_output_hwc_windows_buffers_update(E_Output_Hwc *output_hwc)
{
const Eina_List *l;
E_Hwc_Window *hwc_window;
continue;
}
- if (!e_hwc_window_update(hwc_window))
+ if (!e_hwc_window_buffer_update(hwc_window))
{
ERR("HWC-WINS: cannot update E_Hwc_Window(%p)", hwc_window);
return EINA_FALSE;
}
}
-#if DBG_EVALUATE
- ELOGF("HWC-WINS", " Request HWC Validation to TDM HWC:", NULL, NULL);
- _e_output_hwc_windows_status_print(output_hwc, EINA_FALSE);
-#endif
-
return EINA_TRUE;
}
static Eina_Bool
_e_output_hwc_windows_uncomplete_transition_check(E_Output_Hwc *output_hwc)
{
-#if 1
- return EINA_TRUE;
-#else
const Eina_List *l;
E_Hwc_Window *hwc_window;
E_Hwc_Window_Target *target_hwc_window = output_hwc->target_hwc_window;
hwc_window->uncompleted_transition = E_HWC_WINDOW_TRANSITION_NONE_TO_NONE;
else
{
- e_hwc_window_state_set(hwc_window, E_HWC_WINDOW_STATE_NONE);
+ e_hwc_window_state_set(hwc_window, E_HWC_WINDOW_STATE_DEVICE);
ret = EINA_FALSE;
#if DBG_EVALUATE
ELOGF("HWC-WINS", " E_HWC_WINDOW_TRANSITION_CLIENT_TO_DEVICE is set.(Transition_Check)", NULL, NULL);
}
return ret;
-#endif
}
static void
hwc_window->uncompleted_transition = E_HWC_WINDOW_TRANSITION_DEVICE_TO_NONE;
#if DBG_EVALUATE
ELOGF("HWC-WINS", " E_HWC_WINDOW_TRANSITION_DEVICE_TO_NONE is set.(Transition_Update)", NULL, NULL);
- }
#endif
+ }
#endif
}
if (e_hwc_window_state_get(hwc_window) == E_HWC_WINDOW_STATE_CLIENT)
{
hwc_window->transition = E_HWC_WINDOW_TRANSITION_DEVICE_TO_CLIENT;
-#if 0
/* need to complete_transition if target_window is enabled */
if (e_hwc_window_target_enabled(output_hwc->target_hwc_window))
{
ELOGF("HWC-WINS", " E_HWC_WINDOW_STATE_CLIENT is set.(Transition_Update)", NULL, NULL);
#endif
}
-#endif
}
if (e_hwc_window_state_get(hwc_window) == E_HWC_WINDOW_STATE_DEVICE)
hwc_window->transition = E_HWC_WINDOW_TRANSITION_DEVICE_TO_DEVICE;
can_validate = _e_output_hwc_windows_uncomplete_transition_check(output_hwc);
if (can_validate)
{
- if (!_e_output_hwc_windows_update(output_hwc))
+ if (!_e_output_hwc_windows_compsitions_update(output_hwc))
{
- ERR("HWC-WINS: _e_output_hwc_windows_update failed.");
+ ERR("HWC-WINS: _e_output_hwc_windows_compsitions_update failed.");
ret = EINA_FALSE;
goto done;
}
}
done:
+
+ /* update the buffers and the infos */
+ _e_output_hwc_windows_buffers_update(output_hwc);
+
return ret;
}
ELOGF("HWC-WINS", "====================== Output HWC Apply (evaluate) ======================", NULL, NULL);
+ if (e_comp_canvas_norender_get() > 0)
+ {
+ ELOGF("HWC-WINS", " Block Display... NoRender get.", NULL, NULL);
+ return EINA_TRUE;
+ }
+
/* evaulate the current states */
_e_output_hwc_windows_states_evaluate(output_hwc);