fix(indev): update lv_indev_drv_update to free the read_timer (#2850)
* fix(lv_hal_indev): update lv_indev_drv_update to free the read_timer The read timer was not freed and recreated. The display was also not checked to be NULL. * fix(lv_hal_indev): update lv_indev_drv_update to free the read_timer (fix formatting) * fix(lv_hal_indev): update lv_indev_drv_update to free the read_timer (fix formatting 2)
This commit is contained in:
@@ -106,7 +106,25 @@ lv_indev_t * lv_indev_drv_register(lv_indev_drv_t * driver)
|
||||
*/
|
||||
void lv_indev_drv_update(lv_indev_t * indev, lv_indev_drv_t * new_drv)
|
||||
{
|
||||
LV_ASSERT_NULL(indev);
|
||||
LV_ASSERT_NULL(indev->driver);
|
||||
LV_ASSERT_NULL(indev->driver->read_timer);
|
||||
lv_timer_del(indev->driver->read_timer);
|
||||
|
||||
LV_ASSERT_NULL(new_drv);
|
||||
if(new_drv->disp == NULL) {
|
||||
new_drv->disp = lv_disp_get_default();
|
||||
}
|
||||
if(new_drv->disp == NULL) {
|
||||
LV_LOG_WARN("lv_indev_drv_register: no display registered hence can't attach the indev to "
|
||||
"a display");
|
||||
indev->proc.disabled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
indev->driver = new_drv;
|
||||
indev->driver->read_timer = lv_timer_create(lv_indev_read_timer_cb, LV_INDEV_DEF_READ_PERIOD, indev);
|
||||
indev->proc.reset_query = 1;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user