diff --git a/lv_conf_checker.h b/lv_conf_checker.h index a04afe745..b818dd1c8 100644 --- a/lv_conf_checker.h +++ b/lv_conf_checker.h @@ -161,6 +161,12 @@ #ifndef USE_LV_I18N #define USE_LV_I18N 1 /*1: Enable InternationalizatioN (multi-language) support*/ #endif +#ifndef USE_LV_USER_DATA_SINGLE +#define USE_LV_USER_DATA_SINGLE 1 /*1: Add a `user_data` to drivers and objects*/ +#endif +#ifndef USE_LV_USER_DATA_MULTI +#define USE_LV_USER_DATA_MULTI 0 /*1: Add separate `user_data` for every callback*/ +#endif /*Compiler settings*/ #ifndef LV_ATTRIBUTE_TICK_INC diff --git a/lv_conf_templ.h b/lv_conf_templ.h index 41ce92743..cce4c48b7 100644 --- a/lv_conf_templ.h +++ b/lv_conf_templ.h @@ -90,11 +90,9 @@ #define USE_LV_GROUP 1 /*1: Enable object groups (for keyboards)*/ #define USE_LV_GPU 1 /*1: Enable GPU interface*/ #define USE_LV_FILESYSTEM 1 /*1: Enable file system (might be required for images*/ -<<<<<<< HEAD #define USE_LV_I18N 1 /*1: Enable InternationalizatioN (multi-language) support*/ -======= -#define USE_LV_I18N 0 /*1: Enable InternationalizatioN (multi-language) support*/ ->>>>>>> i18n +#define USE_LV_USER_DATA_SINGLE 1 /*1: Add a `user_data` to drivers and objects*/ +#define USE_LV_USER_DATA_MULTI 0 /*1: Add separate `user_data` for every callback*/ /*Compiler settings*/ #define LV_ATTRIBUTE_TICK_INC /* Define a custom attribute to `lv_tick_inc` function */ diff --git a/lv_hal/lv_hal_disp.h b/lv_hal/lv_hal_disp.h index 4b820e49c..a7e337a70 100644 --- a/lv_hal/lv_hal_disp.h +++ b/lv_hal/lv_hal_disp.h @@ -69,22 +69,30 @@ typedef struct _disp_drv_t { /* MANDATORY: Write the internal buffer (VDB) to the display. 'lv_flush_ready()' has to be called when finished */ void (*flush_cb)(struct _disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p); - lv_disp_drv_user_data_t flush_user_data; /* OPTIONAL: Extend the invalidated areas to match with the display drivers requirements * E.g. round `y` to, 8, 16 ..) on a monochrome display*/ void (*rounder_cb)(struct _disp_drv_t * disp_drv, lv_area_t * area); - lv_disp_drv_user_data_t rounder_user_data; /* OPTIONAL: Set a pixel in a buffer according to the special requirements of the display * Can be used for color format not supported in LittelvGL. E.g. 2 bit -> 4 gray scales * Note: Much slower then drawing with supported color formats. */ void (*set_px_cb)(struct _disp_drv_t * disp_drv, uint8_t * buf, lv_coord_t buf_w, lv_coord_t x, lv_coord_t y, lv_color_t color, lv_opa_t opa); - lv_disp_drv_user_data_t set_px_user_data; /* OPTIONAL: Called after every refresh cycle to tell the rendering and flushing time + the number of flushed pixels */ void (*monitor_cb)(struct _disp_drv_t * disp_drv, uint32_t time, uint32_t px); + + +#if USE_LV_USER_DATA_SINGLE + lv_disp_drv_user_data_t user_data; +#endif + +#if USE_LV_USER_DATA_MULTI + lv_disp_drv_user_data_t flush_user_data; + lv_disp_drv_user_data_t rounder_user_data; + lv_disp_drv_user_data_t set_px_user_data; lv_disp_drv_user_data_t monitor_user_data; +#endif #if USE_LV_GPU /*OPTIONAL: Blend two memories using opacity (GPU only)*/ diff --git a/lv_hal/lv_hal_indev.h b/lv_hal/lv_hal_indev.h index 7fb638706..42cadc6ea 100644 --- a/lv_hal/lv_hal_indev.h +++ b/lv_hal/lv_hal_indev.h @@ -72,7 +72,14 @@ typedef struct { typedef struct _lv_indev_drv_t { lv_hal_indev_type_t type; /*Input device type*/ bool (*read_cb)(struct _lv_indev_drv_t * indev_drv, lv_indev_data_t *data); /*Function pointer to read_cb data. Return 'true' if there is still data to be read_cb (buffered)*/ + +#if USE_LV_USER_DATA_MULTI lv_indev_drv_user_data_t read_user_data; /*Pointer to user defined data, passed in 'lv_indev_data_t' on read*/ +#endif + +#if USE_LV_USER_DATA_SINGLE + lv_indev_drv_user_data_t user_data; +#endif struct _disp_t * disp; /*Pointer to the assigned display*/ } lv_indev_drv_t;