mirror of
https://github.com/lvgl/lvgl.git
synced 2025-01-14 06:42:58 +08:00
feat(sdl): support indev LV_EVENT_DELETE (#4792)
Signed-off-by: XiaoweiYan <yanxiaowei@xiaomi.com> Signed-off-by: YanXiaowei <yanxiaowei@xiaomi.com> Co-authored-by: XiaoweiYan <yanxiaowei@xiaomi.com>
This commit is contained in:
parent
8cfb718ad3
commit
69d65257bb
@ -31,6 +31,7 @@ typedef struct {
|
|||||||
**********************/
|
**********************/
|
||||||
static void sdl_keyboard_read(lv_indev_t * indev, lv_indev_data_t * data);
|
static void sdl_keyboard_read(lv_indev_t * indev, lv_indev_data_t * data);
|
||||||
static uint32_t keycode_to_ctrl_key(SDL_Keycode sdl_key);
|
static uint32_t keycode_to_ctrl_key(SDL_Keycode sdl_key);
|
||||||
|
static void release_indev_cb(lv_event_t * e);
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
* STATIC VARIABLES
|
* STATIC VARIABLES
|
||||||
@ -57,6 +58,8 @@ lv_indev_t * lv_sdl_keyboard_create(void)
|
|||||||
lv_indev_set_read_cb(indev, sdl_keyboard_read);
|
lv_indev_set_read_cb(indev, sdl_keyboard_read);
|
||||||
lv_indev_set_driver_data(indev, dsc);
|
lv_indev_set_driver_data(indev, dsc);
|
||||||
|
|
||||||
|
lv_indev_add_event(indev, release_indev_cb, LV_EVENT_DELETE, indev);
|
||||||
|
|
||||||
return indev;
|
return indev;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,6 +89,18 @@ static void sdl_keyboard_read(lv_indev_t * indev, lv_indev_data_t * data)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void release_indev_cb(lv_event_t * e)
|
||||||
|
{
|
||||||
|
lv_indev_t * indev = (lv_indev_t *) lv_event_get_user_data(e);
|
||||||
|
lv_sdl_keyboard_t * dev = lv_indev_get_driver_data(indev);
|
||||||
|
if(dev) {
|
||||||
|
lv_indev_set_driver_data(indev, NULL);
|
||||||
|
lv_indev_set_read_cb(indev, NULL);
|
||||||
|
lv_free(dev);
|
||||||
|
LV_LOG_INFO("done");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void _lv_sdl_keyboard_handler(SDL_Event * event)
|
void _lv_sdl_keyboard_handler(SDL_Event * event)
|
||||||
{
|
{
|
||||||
uint32_t win_id = UINT32_MAX;
|
uint32_t win_id = UINT32_MAX;
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
* STATIC PROTOTYPES
|
* STATIC PROTOTYPES
|
||||||
**********************/
|
**********************/
|
||||||
static void sdl_mouse_read(lv_indev_t * indev, lv_indev_data_t * data);
|
static void sdl_mouse_read(lv_indev_t * indev, lv_indev_data_t * data);
|
||||||
|
static void release_indev_cb(lv_event_t * e);
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
* STATIC VARIABLES
|
* STATIC VARIABLES
|
||||||
@ -57,6 +58,8 @@ lv_indev_t * lv_sdl_mouse_create(void)
|
|||||||
lv_indev_set_read_cb(indev, sdl_mouse_read);
|
lv_indev_set_read_cb(indev, sdl_mouse_read);
|
||||||
lv_indev_set_driver_data(indev, dsc);
|
lv_indev_set_driver_data(indev, dsc);
|
||||||
|
|
||||||
|
lv_indev_add_event(indev, release_indev_cb, LV_EVENT_DELETE, indev);
|
||||||
|
|
||||||
return indev;
|
return indev;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -74,6 +77,18 @@ static void sdl_mouse_read(lv_indev_t * indev, lv_indev_data_t * data)
|
|||||||
data->state = dsc->left_button_down ? LV_INDEV_STATE_PRESSED : LV_INDEV_STATE_RELEASED;
|
data->state = dsc->left_button_down ? LV_INDEV_STATE_PRESSED : LV_INDEV_STATE_RELEASED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void release_indev_cb(lv_event_t * e)
|
||||||
|
{
|
||||||
|
lv_indev_t * indev = (lv_indev_t *) lv_event_get_user_data(e);
|
||||||
|
lv_sdl_mouse_t * dsc = lv_indev_get_driver_data(indev);
|
||||||
|
if(dsc) {
|
||||||
|
lv_indev_set_driver_data(indev, NULL);
|
||||||
|
lv_indev_set_read_cb(indev, NULL);
|
||||||
|
lv_free(dsc);
|
||||||
|
LV_LOG_INFO("done");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void _lv_sdl_mouse_handler(SDL_Event * event)
|
void _lv_sdl_mouse_handler(SDL_Event * event)
|
||||||
{
|
{
|
||||||
uint32_t win_id = UINT32_MAX;
|
uint32_t win_id = UINT32_MAX;
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
* STATIC PROTOTYPES
|
* STATIC PROTOTYPES
|
||||||
**********************/
|
**********************/
|
||||||
static void sdl_mousewheel_read(lv_indev_t * indev, lv_indev_data_t * data);
|
static void sdl_mousewheel_read(lv_indev_t * indev, lv_indev_data_t * data);
|
||||||
|
static void release_indev_cb(lv_event_t * e);
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
* STATIC VARIABLES
|
* STATIC VARIABLES
|
||||||
@ -52,6 +53,8 @@ lv_indev_t * lv_sdl_mousewheel_create(void)
|
|||||||
lv_indev_set_read_cb(indev, sdl_mousewheel_read);
|
lv_indev_set_read_cb(indev, sdl_mousewheel_read);
|
||||||
lv_indev_set_driver_data(indev, dsc);
|
lv_indev_set_driver_data(indev, dsc);
|
||||||
|
|
||||||
|
lv_indev_add_event(indev, release_indev_cb, LV_EVENT_DELETE, indev);
|
||||||
|
|
||||||
return indev;
|
return indev;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,6 +71,18 @@ static void sdl_mousewheel_read(lv_indev_t * indev, lv_indev_data_t * data)
|
|||||||
dsc->diff = 0;
|
dsc->diff = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void release_indev_cb(lv_event_t * e)
|
||||||
|
{
|
||||||
|
lv_indev_t * indev = (lv_indev_t *) lv_event_get_user_data(e);
|
||||||
|
lv_sdl_mousewheel_t * dsc = lv_indev_get_driver_data(indev);
|
||||||
|
if(dsc) {
|
||||||
|
lv_indev_set_driver_data(indev, NULL);
|
||||||
|
lv_indev_set_read_cb(indev, NULL);
|
||||||
|
lv_free(dsc);
|
||||||
|
LV_LOG_INFO("done");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void _lv_sdl_mousewheel_handler(SDL_Event * event)
|
void _lv_sdl_mousewheel_handler(SDL_Event * event)
|
||||||
{
|
{
|
||||||
uint32_t win_id = UINT32_MAX;
|
uint32_t win_id = UINT32_MAX;
|
||||||
|
@ -272,7 +272,7 @@ void lv_indev_set_type(lv_indev_t * indev, lv_indev_type_t indev_type)
|
|||||||
indev->reset_query = 1;
|
indev->reset_query = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void lv_indev_set_read_cb(lv_indev_t * indev, lv_indev_read_cb_t read_cb)
|
void lv_indev_set_read_cb(lv_indev_t * indev, lv_indev_read_cb_t read_cb)
|
||||||
{
|
{
|
||||||
if(indev == NULL) return;
|
if(indev == NULL) return;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user