15#define GET_TIME() BLI_time_now_seconds()
38 double first_interval,
42 timed_func->
func = func;
48 timed_func->
uuid = uuid;
64 if (timed_func->uuid == uuid && !timed_func->tag_removal) {
65 timed_func->tag_removal =
true;
76 if (timed_func->uuid == uuid && !timed_func->tag_removal) {
88 if (timed_func->tag_removal) {
91 if (timed_func->next_time > current_time) {
95 double ret = timed_func->func(timed_func->uuid, timed_func->user_data);
98 timed_func->tag_removal =
true;
101 timed_func->next_time = current_time +
ret;
112 if (timed_func->tag_removal) {
129 timed_func->tag_removal =
true;
138 if (!timed_func->persistent) {
139 timed_func->tag_removal =
true;
#define LISTBASE_FOREACH(type, var, list)
void BLI_freelinkN(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_addtail(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
Platform independent time functions.
static TimerContainer GlobalTimer
static void clear_user_data(TimedFunction *timed_func)
static void remove_tagged_functions()
static void execute_functions_if_necessary()
static void remove_non_persistent_functions()
bool BLI_timer_is_registered(uintptr_t uuid)
void BLI_timer_register(uintptr_t uuid, BLI_timer_func func, void *user_data, BLI_timer_data_free user_data_free, double first_interval, bool persistent)
void BLI_timer_on_file_load()
bool BLI_timer_unregister(uintptr_t uuid)
void(* BLI_timer_data_free)(uintptr_t uuid, void *user_data)
double(* BLI_timer_func)(uintptr_t uuid, void *user_data)
Read Guarded memory(de)allocation.
void * MEM_callocN(size_t len, const char *str)
BLI_timer_data_free user_data_free