From: Changyeon Lee Date: Mon, 12 Jun 2023 10:28:16 +0000 (+0900) Subject: e_hwc_windows: add timeout log of tdm_hwc_commit_handler X-Git-Tag: accepted/tizen/unified/20230621.023233~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6fb6706b6776b06b6779a48051e00913970935d4;p=platform%2Fupstream%2Fenlightenment.git e_hwc_windows: add timeout log of tdm_hwc_commit_handler log is printed when tdm_hwc_commit_handler is not called until 5 seconds are over. Change-Id: Icbdfb98d480849064d94e4a350bad6c3633dbdee --- diff --git a/src/bin/e_hwc_windows.c b/src/bin/e_hwc_windows.c index e6ec8f97a2..9446470e2b 100644 --- a/src/bin/e_hwc_windows.c +++ b/src/bin/e_hwc_windows.c @@ -6,6 +6,8 @@ # include # include +#define E_HWC_WINDOW_COMMIT_HANDLER_LOG_TIMEOUT 5.0 + #define DBG_EVALUATE 1 #define DEFAULT_MAX_TRANSITION_FAILURES 3; @@ -438,6 +440,12 @@ _e_hwc_windows_commit_handler(tdm_hwc *thwc, unsigned int sequence, hwc = wins_commit_data->hwc; EINA_SAFETY_ON_NULL_RETURN(hwc); + if (wins_commit_data->commit_handler_log_timeout_set) + { + EHWSERR("Timeout commit handler is called wins_commit_data:%p", + hwc, wins_commit_data); + } + EHWSTRACE("!!!!!!!! HWC Commit Handler !!!!!!!!", NULL, hwc); TRACE_DS_MARK(_e_hwc_windows_commit_handler); @@ -456,7 +464,8 @@ _e_hwc_windows_commit_handler_timeout(void *data) if (!wins_commit_data) return ECORE_CALLBACK_CANCEL; - EHWSERR("Timeout wait commit", wins_commit_data->hwc); + EHWSERR("Timeout wait commit wins_commit_data:%p", + wins_commit_data->hwc, wins_commit_data); wins_commit_data->commit_handler_timer = NULL; @@ -465,11 +474,25 @@ _e_hwc_windows_commit_handler_timeout(void *data) return ECORE_CALLBACK_CANCEL; } +static Eina_Bool +_e_hwc_windows_commit_handler_log_timeout(void *data) +{ + E_Hwc_Windows_Commit_Data *wins_commit_data = (E_Hwc_Windows_Commit_Data *)data; + + if (!wins_commit_data) return ECORE_CALLBACK_CANCEL; + + EHWSERR("Timeout wait commit wins_commit_data:%p", + wins_commit_data->hwc, wins_commit_data); + + wins_commit_data->commit_handler_timer = NULL; + wins_commit_data->commit_handler_log_timeout_set = EINA_TRUE; + + return ECORE_CALLBACK_CANCEL; +} + static void _e_hwc_windows_commit_handler_timer_set(E_Hwc *hwc, E_Hwc_Windows_Commit_Data *wins_commit_data, Eina_Bool set) { - if (!e_comp->commit_handler_timer.use) return; - if (wins_commit_data->commit_handler_timer) { ecore_timer_del(wins_commit_data->commit_handler_timer); @@ -477,9 +500,21 @@ _e_hwc_windows_commit_handler_timer_set(E_Hwc *hwc, E_Hwc_Windows_Commit_Data *w } if (set) - wins_commit_data->commit_handler_timer = ecore_timer_add(e_comp->commit_handler_timer.interval, - _e_hwc_windows_commit_handler_timeout, - wins_commit_data); + { + if (e_comp->commit_handler_timer.use) + { + wins_commit_data->commit_handler_timer = ecore_timer_add(e_comp->commit_handler_timer.interval, + _e_hwc_windows_commit_handler_timeout, + wins_commit_data); + } + else + { + wins_commit_data->commit_handler_timer = ecore_timer_add(E_HWC_WINDOW_COMMIT_HANDLER_LOG_TIMEOUT, + _e_hwc_windows_commit_handler_log_timeout, + wins_commit_data); + wins_commit_data->commit_handler_log_timeout_set = EINA_FALSE; + } + } } static E_Hwc_Windows_Commit_Data * diff --git a/src/bin/e_hwc_windows.h b/src/bin/e_hwc_windows.h index 174504408f..4e474b4d22 100644 --- a/src/bin/e_hwc_windows.h +++ b/src/bin/e_hwc_windows.h @@ -26,6 +26,7 @@ struct _E_Hwc_Windows_Commit_Data { E_Hwc *hwc; Ecore_Timer *commit_handler_timer; + Eina_Bool commit_handler_log_timeout_set; Eina_Bool use_vblank_handler; Eina_Bool vblank_done;