From: Changyeon Lee Date: Tue, 25 Jul 2023 08:17:53 +0000 (+0900) Subject: tdm_vblank: Add tdm_vblank_set_timeout_handler X-Git-Tag: accepted/tizen/8.0/unified/20231005.094225~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=745fb18f4e20ed0f187f20b231c493e8124e138a;p=platform%2Fcore%2Fuifw%2Flibtdm.git tdm_vblank: Add tdm_vblank_set_timeout_handler Change-Id: I90358136d4a7486db8cc883e8cdebd2b15074dd2 --- diff --git a/src/tdm_private.h b/src/tdm_private.h index fcc3245..32e461c 100644 --- a/src/tdm_private.h +++ b/src/tdm_private.h @@ -180,6 +180,8 @@ tdm_error tdm_vblank_set_client_vblank_fps(unsigned int pid, const char *name, unsigned int fps); void tdm_vblank_get_vblank_list_information(tdm_display *dpy, char *reply, int *len); +tdm_error +tdm_vblank_set_timeout_handler(tdm_vblank *vblank, tdm_vblank_timeout_handler func, void *user_data); tdm_error tdm_pp_init(tdm_private_display *private_display); diff --git a/src/tdm_private_types.h b/src/tdm_private_types.h index 5ec9411..fd8567f 100644 --- a/src/tdm_private_types.h +++ b/src/tdm_private_types.h @@ -122,6 +122,8 @@ typedef struct _tdm_private_voutput_commit_handler tdm_private_voutput_commit_ha typedef struct _tdm_private_layer_buffer tdm_private_layer_buffer; +typedef void (*tdm_vblank_timeout_handler)(tdm_vblank *vblank, void *user_data); + struct _tdm_private_module { struct list_head link; diff --git a/src/tdm_vblank.c b/src/tdm_vblank.c index bc53543..499bba4 100644 --- a/src/tdm_vblank.c +++ b/src/tdm_vblank.c @@ -129,6 +129,8 @@ typedef struct _tdm_private_vblank { /* for timeout */ tdm_event_loop_source *timeout_timer; + tdm_vblank_timeout_handler timeout_func; + void *timeout_user_data; } tdm_private_vblank; struct _tdm_vblank_wait_info { @@ -1096,6 +1098,9 @@ _tdm_vblank_timeout_timer_cb(void *user_data) w, w->req_time, w->target_time, w->target_seq, w->interval); } + if (private_vblank->timeout_func) + private_vblank->timeout_func(private_vblank, private_vblank->timeout_user_data); + return TDM_ERROR_NONE; } @@ -1782,6 +1787,19 @@ no_client: return; } +INTERN tdm_error +tdm_vblank_set_timeout_handler(tdm_vblank *vblank, tdm_vblank_timeout_handler func, void *user_data) +{ + tdm_private_vblank *private_vblank = vblank; + + TDM_RETURN_VAL_IF_FAIL(tdm_vblank_is_valid(vblank), TDM_ERROR_INVALID_PARAMETER); + + private_vblank->timeout_func = func; + private_vblank->timeout_user_data = user_data; + + return TDM_ERROR_NONE; +} + /* LCOV_EXCL_START */ INTERN void tdm_vblank_get_vblank_list_information(tdm_display *dpy, char *reply, int *len)