1 /** 2 * @file lv_gc.h 3 * 4 */ 5 6 #ifndef LV_GC_H 7 #define LV_GC_H 8 9 #ifdef __cplusplus 10 extern "C" { 11 #endif 12 13 /********************* 14 * INCLUDES 15 *********************/ 16 17 #ifdef LV_CONF_INCLUDE_SIMPLE 18 #include "lv_conf.h" 19 #else 20 #include "../../lv_conf.h" 21 #endif 22 23 #include <stdint.h> 24 #include <stdbool.h> 25 #include "lv_mem.h" 26 #include "lv_ll.h" 27 #include "../lv_draw/lv_img_cache.h" 28 29 /********************* 30 * DEFINES 31 *********************/ 32 33 #define LV_GC_ROOTS(prefix) \ 34 prefix lv_ll_t _lv_task_ll; /*Linked list to store the lv_tasks*/ \ 35 prefix lv_ll_t _lv_disp_ll; /*Linked list of screens*/ \ 36 prefix lv_ll_t _lv_indev_ll; /*Linked list of screens*/ \ 37 prefix lv_ll_t _lv_drv_ll; \ 38 prefix lv_ll_t _lv_file_ll; \ 39 prefix lv_ll_t _lv_anim_ll; \ 40 prefix lv_ll_t _lv_group_ll; \ 41 prefix lv_ll_t _lv_img_defoder_ll; \ 42 prefix lv_img_cache_entry_t * _lv_img_cache_array; \ 43 prefix void * _lv_task_act; \ 44 prefix void * _lv_draw_buf; 45 46 #define LV_NO_PREFIX 47 #define LV_ROOTS LV_GC_ROOTS(LV_NO_PREFIX) 48 49 #if LV_ENABLE_GC == 1 50 #if LV_MEM_CUSTOM != 1 51 #error "GC requires CUSTOM_MEM" 52 #endif /* LV_MEM_CUSTOM */ 53 #else /* LV_ENABLE_GC */ 54 #define LV_GC_ROOT(x) x 55 LV_GC_ROOTS(extern) 56 #endif /* LV_ENABLE_GC */ 57 58 /********************** 59 * TYPEDEFS 60 **********************/ 61 62 /********************** 63 * GLOBAL PROTOTYPES 64 **********************/ 65 66 /********************** 67 * MACROS 68 **********************/ 69 70 #ifdef __cplusplus 71 } /* extern "C" */ 72 #endif 73 74 #endif /*LV_GC_H*/ 75