事件处理框架:通过周期性调用lv_indev_read_timer_cb函数,从底层获取事件并进行处理。
触摸事件处理函数:indev_pointer_proc -》indev_proc_press、indev_proc_release
press事件更新机制:
当检测到当前活动对象indev_obj_act不等于上一次的对象(proc->types.pointer.act_obj)时,则认为触摸丢失,如果当前对象不为空,则将上一次的触摸事件结束,然后产生一个新的LV_EVENT_PRESSED事件;
注意事项:
lv_indev_read_timer_cb函数在读取底层事件时,是持续获取的,如果底层驱动未上报对应事件,则lv_indev_read_timer_cb将会得到一个空事件(默认为释放动作),将会导致之前按下的动作变成释放,从而使触摸失去连续性!!!
因此底层事件接口不能传递空事件给LVGL内核,一种处理办法是,当触摸按下(未释放)时,如果没有新的事件产生,则将上一次的触摸事件传给内核。
标签:事件处理,触摸,cb,indev,事件,注意事项,LVGL,proc From: https://www.cnblogs.com/30toB/p/17078492.html