lvgl:add lv_display_remove_event_cb_with_user_data (#4998)

Signed-off-by: jianglianfang <jianglianfang@xiaomi.com>
This commit is contained in:
jianglianfang
2023-12-26 10:36:57 +08:00
committed by GitHub
parent 7c8e5d411d
commit 16b15b843d
6 changed files with 84 additions and 0 deletions

View File

@@ -139,6 +139,25 @@ bool lv_obj_remove_event_cb(lv_obj_t * obj, lv_event_cb_t event_cb)
return false;
}
uint32_t lv_obj_remove_event_cb_with_user_data(lv_obj_t * obj, lv_event_cb_t event_cb, void * user_data)
{
LV_ASSERT_NULL(obj);
uint32_t event_cnt = lv_obj_get_event_count(obj);
uint32_t removed_count = 0;
int32_t i;
for(i = event_cnt - 1; i >= 0; i--) {
lv_event_dsc_t * dsc = lv_obj_get_event_dsc(obj, i);
if(dsc && dsc->cb == event_cb && dsc->user_data == user_data) {
lv_obj_remove_event(obj, i);
removed_count ++;
}
}
return removed_count;
}
lv_obj_t * lv_event_get_current_target_obj(lv_event_t * e)
{
return lv_event_get_current_target(e);

View File

@@ -113,6 +113,15 @@ bool lv_obj_remove_event(struct _lv_obj_t * obj, uint32_t index);
bool lv_obj_remove_event_cb(struct _lv_obj_t * obj, lv_event_cb_t event_cb);
/**
* Remove an event_cb with user_data
* @param obj pointer to a obj
* @param event_cb the event_cb of the event to remove
* @param user_data user_data
* @return the count of the event removed
*/
uint32_t lv_obj_remove_event_cb_with_user_data(struct _lv_obj_t * obj, lv_event_cb_t event_cb, void * user_data);
/**
* Get the input device passed as parameter to indev related events.
* @param e pointer to an event

View File

@@ -709,6 +709,25 @@ bool lv_display_delete_event(lv_display_t * disp, uint32_t index)
return lv_event_remove(&disp->event_list, index);
}
uint32_t lv_display_remove_event_cb_with_user_data(lv_display_t * disp, lv_event_cb_t event_cb, void * user_data)
{
LV_ASSERT_NULL(disp);
uint32_t event_cnt = lv_display_get_event_count(disp);
uint32_t removed_count = 0;
int32_t i;
for(i = event_cnt - 1; i >= 0; i--) {
lv_event_dsc_t * dsc = lv_display_get_event_dsc(disp, i);
if(dsc && dsc->cb == event_cb && dsc->user_data == user_data) {
lv_display_delete_event(disp, i);
removed_count ++;
}
}
return removed_count;
}
lv_result_t lv_display_send_event(lv_display_t * disp, lv_event_code_t code, void * param)
{

View File

@@ -452,6 +452,15 @@ lv_event_dsc_t * lv_display_get_event_dsc(lv_display_t * disp, uint32_t index);
*/
bool lv_display_delete_event(lv_display_t * disp, uint32_t index);
/**
* Remove an event_cb with user_data
* @param disp pointer to a display
* @param event_cb the event_cb of the event to remove
* @param user_data user_data
* @return the count of the event removed
*/
uint32_t lv_display_remove_event_cb_with_user_data(lv_display_t * disp, lv_event_cb_t event_cb, void * user_data);
/**
* Send an event to a display
* @param disp pointer to a display

View File

@@ -568,6 +568,25 @@ bool lv_indev_remove_event(lv_indev_t * indev, uint32_t index)
return lv_event_remove(&indev->event_list, index);
}
uint32_t lv_indev_remove_event_cb_with_user_data(lv_indev_t * indev, lv_event_cb_t event_cb, void * user_data)
{
LV_ASSERT_NULL(indev);
uint32_t event_cnt = lv_indev_get_event_count(indev);
uint32_t removed_count = 0;
int32_t i;
for(i = event_cnt - 1; i >= 0; i--) {
lv_event_dsc_t * dsc = lv_indev_get_event_dsc(indev, i);
if(dsc && dsc->cb == event_cb && dsc->user_data == user_data) {
lv_indev_remove_event(indev, i);
removed_count ++;
}
}
return removed_count;
}
lv_result_t lv_indev_send_event(lv_indev_t * indev, lv_event_code_t code, void * param)
{

View File

@@ -293,6 +293,15 @@ lv_event_dsc_t * lv_indev_get_event_dsc(lv_indev_t * indev, uint32_t index);
*/
bool lv_indev_remove_event(lv_indev_t * indev, uint32_t index);
/**
* Remove an event_cb with user_data
* @param indev pointer to a indev
* @param event_cb the event_cb of the event to remove
* @param user_data user_data
* @return the count of the event removed
*/
uint32_t lv_indev_remove_event_cb_with_user_data(lv_indev_t * indev, lv_event_cb_t event_cb, void * user_data);
/**
* Send an event to an indev
* @param indev pointer to an indev