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:
geert-KLA-BE
2021-12-01 14:56:53 +01:00
committed by GitHub
parent 79f1be5cfa
commit ecabf77d58

View File

@@ -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;
}
/**