From 16f79f4f042e7736f6c4239c4e4e0ee10f981792 Mon Sep 17 00:00:00 2001 From: Gabor Kiss-Vamosi Date: Fri, 24 May 2024 05:45:06 +0200 Subject: [PATCH] fix(sdl): handle if the window_id is not set correctly in SDL (#6194) --- src/drivers/sdl/lv_sdl_keyboard.c | 7 ++++--- src/drivers/sdl/lv_sdl_mouse.c | 5 +++-- src/drivers/sdl/lv_sdl_mousewheel.c | 5 +++-- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/drivers/sdl/lv_sdl_keyboard.c b/src/drivers/sdl/lv_sdl_keyboard.c index 9ce93439e..191e95802 100644 --- a/src/drivers/sdl/lv_sdl_keyboard.c +++ b/src/drivers/sdl/lv_sdl_keyboard.c @@ -115,15 +115,16 @@ void _lv_sdl_keyboard_handler(SDL_Event * event) lv_display_t * disp = _lv_sdl_get_disp_from_win_id(win_id); + /*Find a suitable indev*/ lv_indev_t * indev = lv_indev_get_next(NULL); while(indev) { - if(lv_indev_get_display(indev) == disp && lv_indev_get_type(indev) == LV_INDEV_TYPE_KEYPAD) { - break; + if(lv_indev_get_type(indev) == LV_INDEV_TYPE_KEYPAD) { + /*If disp is NULL for any reason use the first indev with the correct type*/ + if(disp == NULL || lv_indev_get_display(indev) == disp) break; } indev = lv_indev_get_next(indev); } - if(indev == NULL) return; lv_sdl_keyboard_t * dsc = lv_indev_get_driver_data(indev); diff --git a/src/drivers/sdl/lv_sdl_mouse.c b/src/drivers/sdl/lv_sdl_mouse.c index a6c1c692a..7531aafab 100644 --- a/src/drivers/sdl/lv_sdl_mouse.c +++ b/src/drivers/sdl/lv_sdl_mouse.c @@ -132,8 +132,9 @@ void _lv_sdl_mouse_handler(SDL_Event * event) /*Find a suitable indev*/ lv_indev_t * indev = lv_indev_get_next(NULL); while(indev) { - if(lv_indev_get_display(indev) == disp && lv_indev_get_type(indev) == LV_INDEV_TYPE_POINTER) { - break; + if(lv_indev_get_type(indev) == LV_INDEV_TYPE_POINTER) { + /*If disp is NULL for any reason use the first indev with the correct type*/ + if(disp == NULL || lv_indev_get_display(indev) == disp) break; } indev = lv_indev_get_next(indev); } diff --git a/src/drivers/sdl/lv_sdl_mousewheel.c b/src/drivers/sdl/lv_sdl_mousewheel.c index f331e3788..5d423aa92 100644 --- a/src/drivers/sdl/lv_sdl_mousewheel.c +++ b/src/drivers/sdl/lv_sdl_mousewheel.c @@ -104,8 +104,9 @@ void _lv_sdl_mousewheel_handler(SDL_Event * event) /*Find a suitable indev*/ lv_indev_t * indev = lv_indev_get_next(NULL); while(indev) { - if(lv_indev_get_display(indev) == disp && lv_indev_get_type(indev) == LV_INDEV_TYPE_ENCODER) { - break; + if(lv_indev_get_type(indev) == LV_INDEV_TYPE_ENCODER) { + /*If disp is NULL for any reason use the first indev with the correct type*/ + if(disp == NULL || lv_indev_get_display(indev) == disp) break; } indev = lv_indev_get_next(indev); }