From: Changyeon Lee Date: Thu, 5 Nov 2020 09:47:52 +0000 (+0900) Subject: e_comp_wl_tizen_hwc: add timer to hwc_commit_feedback X-Git-Tag: submit/tizen/20201106.045540~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=20f627a561c43bf14d5fac95435bf9b81452eef7;p=platform%2Fupstream%2Fenlightenment.git e_comp_wl_tizen_hwc: add timer to hwc_commit_feedback Change-Id: Ib6abc7274281745b8374f233dce06c7f6514f2f4 --- diff --git a/src/bin/e_comp_wl_tizen_hwc.c b/src/bin/e_comp_wl_tizen_hwc.c index 60fd967e48..b89acaacdc 100644 --- a/src/bin/e_comp_wl_tizen_hwc.c +++ b/src/bin/e_comp_wl_tizen_hwc.c @@ -1,6 +1,8 @@ #include "e.h" #include "tizen-hwc-server-protocol.h" +#define E_COMP_WL_TIZEN_HWC_TIMEOUT 10.0 + static Eina_List *_e_comp_wl_tizen_hwc_list = NULL; typedef struct _E_Comp_Wl_Tizen_Hwc E_Comp_Wl_Tizen_Hwc; @@ -18,6 +20,7 @@ struct _E_Comp_Wl_Tizen_Hwc_Commit_Feedback E_Client *ec; E_Comp_Wl_Tizen_Hwc *tizen_hwc; uint32_t serial; + Ecore_Timer *timer; }; static void @@ -34,6 +37,9 @@ _tizen_hwc_commit_feedback_cb_resource_destroy(struct wl_resource *hwc_commit_fe ELOGF("TIZEN-HWC", "Destory Tizen HWC Commit Feedback.", hwc_commit_feedback->ec); + if (hwc_commit_feedback->timer) + ecore_timer_del(hwc_commit_feedback->timer); + tizen_hwc->hwc_commit_feeback_list = eina_list_remove(tizen_hwc->hwc_commit_feeback_list, hwc_commit_feedback); E_FREE(hwc_commit_feedback); } @@ -46,6 +52,25 @@ _e_comp_wl_tizen_hwc_cb_destroy(struct wl_client *client, ELOGF("TIZEN-HWC", "Destroy Tizen HWC.", NULL); } +static Eina_Bool +_e_comp_wl_tizen_hwc_commit_feedback_cb_timeout(void *data) +{ + E_Comp_Wl_Tizen_Hwc_Commit_Feedback* hwc_commit_feedback = (E_Comp_Wl_Tizen_Hwc_Commit_Feedback *)data; + + if (!hwc_commit_feedback) return ECORE_CALLBACK_CANCEL; + + ELOGF("TIZEN-HWC", "Timeout Tizen HWcCommit Feedback.(%p, %p)", + hwc_commit_feedback->ec, hwc_commit_feedback, hwc_commit_feedback->resource); + + hwc_commit_feedback->timer = NULL; + + tizen_hwc_commit_feedback_send_discarded(hwc_commit_feedback->resource, + hwc_commit_feedback->serial); + wl_resource_destroy(hwc_commit_feedback->resource); + + return ECORE_CALLBACK_CANCEL; +} + static void _e_comp_wl_tizen_hwc_cb_commit_feedback(struct wl_client *client, struct wl_resource *tizen_hwc_resource, @@ -84,6 +109,9 @@ _e_comp_wl_tizen_hwc_cb_commit_feedback(struct wl_client *client, hwc_commit_feedback->ec = ec; hwc_commit_feedback->tizen_hwc = tizen_hwc; hwc_commit_feedback->serial = serial; + hwc_commit_feedback->timer = ecore_timer_add(E_COMP_WL_TIZEN_HWC_TIMEOUT, + _e_comp_wl_tizen_hwc_commit_feedback_cb_timeout, + hwc_commit_feedback); wl_resource_set_implementation(hwc_commit_feedback->resource, NULL, hwc_commit_feedback, _tizen_hwc_commit_feedback_cb_resource_destroy);