72 if (
G.log.file !=
nullptr) {
73 fclose(
static_cast<FILE *
>(
G.log.file));
106 const char *version_cycle =
"";
107 const char *version_cycle_compact =
"";
109 version_cycle =
" Alpha";
110 version_cycle_compact =
" a";
113 version_cycle =
" Beta";
114 version_cycle_compact =
" b";
117 version_cycle =
" Release Candidate";
118 version_cycle_compact =
" RC";
122 version_cycle_compact =
"";
143 version_cycle_compact);
157 const size_t str_buff_maxncpy,
158 const short file_version,
159 const short file_subversion)
161 const short file_version_major = file_version / 100;
162 const short file_version_minor = file_version % 100;
163 if (file_subversion >= 0) {
172 BLI_snprintf_utf8(str_buff, str_buff_maxncpy,
"%d.%d", file_version_major, file_version_minor);
203 STRNCPY(
G.filepath_last_image,
"//");
204 G.filepath_last_blend[0] =
'\0';
206#ifndef WITH_PYTHON_SECURITY
214 G.profile_gpu =
false;
273 MEM_delete(kmi->
ptr);
279 blender::dna::shallow_swap(*userdef_a, *userdef_b);
301 if (kmdi->add_item) {
305 if (kmdi->remove_item) {
330 kpt_next = kpt->next;
353 addon_next = addon->next;
361#define U BLI_STATIC_ASSERT(false, "Global 'U' not allowed, only use arguments passed in!")
414#define VALUE_SWAP(id) \
416 std::swap(userdef_a->id, userdef_b->id); \
419#define DATA_SWAP(id) \
421 UserDef userdef_tmp; \
422 memcpy(&(userdef_tmp.id), &(userdef_a->id), sizeof(userdef_tmp.id)); \
423 memcpy(&(userdef_a->id), &(userdef_b->id), sizeof(userdef_tmp.id)); \
424 memcpy(&(userdef_b->id), &(userdef_tmp.id), sizeof(userdef_tmp.id)); \
428#define FLAG_SWAP(id, ty, flags) \
430 CHECK_TYPE(&(userdef_a->id), ty *); \
431 const ty f = flags; \
432 const ty a = userdef_a->id; \
433 const ty b = userdef_b->id; \
434 userdef_a->id = (userdef_a->id & ~f) | (b & f); \
435 userdef_b->id = (userdef_b->id & ~f) | (a & f); \
void BKE_addon_free(struct bAddon *addon)
const char * BKE_tempdir_base() ATTR_WARN_UNUSED_RESULT ATTR_RETURNS_NONNULL
void BKE_asset_catalog_path_list_free(ListBase &catalog_path_list)
#define BLENDER_VERSION_PATCH
#define BLENDER_VERSION_CYCLE
#define BLENDER_VERSION_SUFFIX
void BKE_brush_system_exit()
void BKE_callback_global_finalize()
void IDP_FreeProperty(IDProperty *prop)
void BKE_main_free(Main *bmain)
void BKE_spacetypes_free()
void BKE_studiolight_free(void)
void BLF_default_set(int fontid)
bool BLF_unload_id(int fontid)
#define BLI_assert_msg(a, msg)
void BLI_kdtree_nd_ free(KDTree *tree)
#define LISTBASE_FOREACH(type, var, list)
BLI_INLINE void BLI_listbase_clear(ListBase *lb)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
void void BLI_freelistN(ListBase *listbase) ATTR_NONNULL(1)
void void void const char * BLI_path_basename(const char *path) ATTR_NONNULL(1) ATTR_WARN_UNUSED_RESULT
bool BLI_path_extension_replace(char *path, size_t path_maxncpy, const char *ext) ATTR_NONNULL(1
#define BLI_path_join(...)
char * STRNCPY(char(&dst)[N], const char *src)
size_t size_t size_t BLI_snprintf_utf8(char *__restrict dst, size_t dst_maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
#define SNPRINTF_UTF8(dst, format,...)
void DEG_free_node_types()
@ USER_SHOW_GIZMO_NAVIGATE
void IMB_moviecache_destruct()
Read Guarded memory(de)allocation.
static struct AtExitData * g_atexit
void BKE_blender_userdef_data_swap(UserDef *userdef_a, UserDef *userdef_b)
static char blender_version_string[48]
static void blender_version_init()
static void userdef_free_keymaps(UserDef *userdef)
const char * BKE_blender_version_string_compact()
bool BKE_blender_version_is_alpha()
Main * BKE_blender_globals_main_swap(Main *new_gmain)
void BKE_blender_userdef_data_set(UserDef *userdef)
const char * BKE_blender_version_string()
static void userdef_free_addons(UserDef *userdef)
void BKE_blender_globals_main_replace(Main *bmain)
static void userdef_free_user_menus(UserDef *userdef)
void BKE_blender_userdef_app_template_data_set_and_free(UserDef *userdef)
void BKE_blender_atexit_register(void(*func)(void *user_data), void *user_data)
void BKE_blender_globals_crash_path_get(char filepath[FILE_MAX])
void BKE_blender_atexit()
void BKE_blender_atexit_unregister(void(*func)(void *user_data), const void *user_data)
void BKE_blender_globals_init()
void BKE_blender_version_blendfile_string_from_values(char *str_buff, const size_t str_buff_maxncpy, const short file_version, const short file_subversion)
void BKE_blender_userdef_data_set_and_free(UserDef *userdef)
void BKE_blender_globals_clear()
void BKE_blender_userdef_app_template_data_set(UserDef *userdef)
#define FLAG_SWAP(id, ty, flags)
void BKE_blender_userdef_app_template_data_swap(UserDef *userdef_a, UserDef *userdef_b)
void BKE_blender_userdef_data_free(UserDef *userdef, bool clear_fonts)
static void keymap_item_free(wmKeyMapItem *kmi)
static char blender_version_string_compact[48]
static void userdef_free_keyconfig_prefs(UserDef *userdef)
bool BKE_blender_version_is_lts()
void MEM_freeN(void *vmemh)
void(* func)(void *user_data)
ListBase script_directories
struct ListBase asset_shelves_settings
struct ListBase user_keymaps
struct ListBase autoexec_paths
struct ListBase user_keyconfig_prefs
struct ListBase extension_repos
struct ListBase user_menus
struct ListBase asset_libraries
void RE_texture_rng_exit()