#include "e_hwc_window_queue_intern.h"
#include "e_compositor_intern.h"
#include "e_output_intern.h"
+#include "e_client_video_intern.h"
#include <libds-tizen/hwc.h>
return EINA_TRUE;
}
+static Eina_Bool
+_e_comp_wl_tizen_hwc_client_update_pending_get(E_Client *ec)
+{
+ E_Hwc_Window *hwc_window = ec->hwc_window;
+
+ if (!hwc_window) return EINA_FALSE;
+ if (hwc_window->present_sync) return EINA_TRUE;
+ if (!e_hwc_window_is_video(hwc_window)) return EINA_FALSE;
+ if (!e_view_client_visible_get(e_client_view_get(ec))) return EINA_FALSE;
+ if (!e_client_video_tbm_surface_get(ec)) return EINA_TRUE;
+
+ return EINA_FALSE;
+}
+
EINTERN void
e_comp_wl_tizen_hwc_shutdown(void)
{
EINA_LIST_FOREACH_SAFE(tizen_hwc_mgr->ds_tizen_hwc_commit_feedback_list, l, ll, wrapper)
{
if (wrapper->pending) continue;
- if ((wrapper->ec->hwc_window) &&
- (wrapper->ec->hwc_window->present_sync)) continue;
if (wrapper->dequeued) continue;
+ if (_e_comp_wl_tizen_hwc_client_update_pending_get(wrapper->ec)) continue;
ELOGF("TIZEN-HWC", "[Send] Commit Feedback Committed.(%p)", wrapper->ec, wrapper);
ds_tizen_hwc_commit_feedback_send_committed(wrapper->ds_tizen_hwccf);
EINA_LIST_FOREACH_SAFE(tizen_hwc_mgr->ds_tizen_hwc_commit_feedback_list, l, ll, wrapper)
{
if (wrapper->pending) continue;
- if ((wrapper->ec->hwc_window) &&
- (wrapper->ec->hwc_window->present_sync)) continue;
if (wrapper->dequeued) continue;
+ if (_e_comp_wl_tizen_hwc_client_update_pending_get(wrapper->ec)) continue;
ELOGF("TIZEN-HWC", "[Send] Commit Feedback Discarded.(%p)", wrapper->ec, wrapper);
ds_tizen_hwc_commit_feedback_send_discarded(wrapper->ds_tizen_hwccf);