Enable Micropython gc (Garbage Collection) on lvgl. This is controlled by LV_ENABLE_GC macro defined in lv_conf.h. When enabled, lv_conf.h should also define LV_MEM_CUSTOM_REALLOC, LV_MEM_CUSTOM_GET_SIZE, LV_GC_INCLUDE and LV_GC_ROOT

This commit is contained in:
Amir Gonnen
2019-01-12 01:07:34 +02:00
parent 848939683e
commit a883f0b39a
11 changed files with 260 additions and 88 deletions

View File

@@ -10,6 +10,12 @@
*********************/
#include "../lv_hal/lv_hal_indev.h"
#include "../lv_misc/lv_mem.h"
#include "../lv_misc/lv_gc.h"
#if defined(LV_GC_INCLUDE)
# include LV_GC_INCLUDE
#endif /* LV_ENABLE_GC */
/*********************
* DEFINES
@@ -22,7 +28,6 @@
/**********************
* STATIC PROTOTYPES
**********************/
static lv_indev_t * indev_list = NULL;
/**********************
* STATIC VARIABLES
@@ -44,6 +49,7 @@ static lv_indev_t * indev_list = NULL;
*/
void lv_indev_drv_init(lv_indev_drv_t * driver)
{
LV_GC_ROOT(indev_list) = NULL;
driver->read = NULL;
driver->type = LV_INDEV_TYPE_NONE;
driver->user_data = NULL;
@@ -70,10 +76,10 @@ lv_indev_t * lv_indev_drv_register(lv_indev_drv_t * driver)
node->group = NULL;
node->btn_points = NULL;
if(indev_list == NULL) {
indev_list = node;
if(LV_GC_ROOT(indev_list) == NULL) {
LV_GC_ROOT(indev_list) = node;
} else {
lv_indev_t * last = indev_list;
lv_indev_t * last = LV_GC_ROOT(indev_list);
while(last->next)
last = last->next;
@@ -92,7 +98,7 @@ lv_indev_t * lv_indev_next(lv_indev_t * indev)
{
if(indev == NULL) {
return indev_list;
return LV_GC_ROOT(indev_list);
} else {
if(indev->next == NULL) return NULL;
else return indev->next;