Blender V4.3
blender.cc File Reference
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include "MEM_guardedalloc.h"
#include "BLI_listbase.h"
#include "BLI_string.h"
#include "BLI_utildefines.h"
#include "IMB_imbuf.hh"
#include "IMB_moviecache.hh"
#include "BKE_addon.h"
#include "BKE_asset.hh"
#include "BKE_blender.hh"
#include "BKE_blender_user_menu.hh"
#include "BKE_blender_version.h"
#include "BKE_brush.hh"
#include "BKE_cachefile.hh"
#include "BKE_callbacks.hh"
#include "BKE_global.hh"
#include "BKE_idprop.hh"
#include "BKE_main.hh"
#include "BKE_node.hh"
#include "BKE_report.hh"
#include "BKE_screen.hh"
#include "BKE_studiolight.h"
#include "BKE_writeffmpeg.hh"
#include "DEG_depsgraph.hh"
#include "RE_texture.h"
#include "BLF_api.hh"

Go to the source code of this file.

Classes

struct  AtExitData
 

Macros

#define U   BLI_STATIC_ASSERT(false, "Global 'U' not allowed, only use arguments passed in!")
 
#define VALUE_SWAP(id)
 
#define DATA_SWAP(id)
 
#define FLAG_SWAP(id, ty, flags)
 

Functions

Blender Free on Exit
void BKE_blender_free ()
 
Blender #Global Initialize/Clear
void BKE_blender_globals_init ()
 
void BKE_blender_globals_clear ()
 
void BKE_blender_globals_main_replace (Main *bmain)
 
MainBKE_blender_globals_main_swap (Main *new_gmain)
 
Blender Preferences
static void keymap_item_free (wmKeyMapItem *kmi)
 
void BKE_blender_userdef_data_swap (UserDef *userdef_a, UserDef *userdef_b)
 
void BKE_blender_userdef_data_set (UserDef *userdef)
 
void BKE_blender_userdef_data_set_and_free (UserDef *userdef)
 
static void userdef_free_keymaps (UserDef *userdef)
 
static void userdef_free_keyconfig_prefs (UserDef *userdef)
 
static void userdef_free_user_menus (UserDef *userdef)
 
static void userdef_free_addons (UserDef *userdef)
 
void BKE_blender_userdef_data_free (UserDef *userdef, bool clear_fonts)
 
Blender Preferences (Application Templates)
void BKE_blender_userdef_app_template_data_swap (UserDef *userdef_a, UserDef *userdef_b)
 
void BKE_blender_userdef_app_template_data_set (UserDef *userdef)
 
void BKE_blender_userdef_app_template_data_set_and_free (UserDef *userdef)
 

Variables

Global G
 
UserDef U
 

Blender Version Access

static char blender_version_string [48] = ""
 
static char blender_version_string_compact [48] = ""
 
static void blender_version_init ()
 
const char * BKE_blender_version_string ()
 
const char * BKE_blender_version_string_compact ()
 
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)
 
bool BKE_blender_version_is_alpha ()
 
bool BKE_blender_version_is_lts ()
 

Blender's AtExit

Note
Don't use MEM_mallocN so functions can be registered at any time.
static struct AtExitDatag_atexit = nullptr
 
void BKE_blender_atexit_register (void(*func)(void *user_data), void *user_data)
 
void BKE_blender_atexit_unregister (void(*func)(void *user_data), const void *user_data)
 
void BKE_blender_atexit ()
 

Detailed Description

Application level startup/shutdown functionality.

Definition in file blender.cc.

Macro Definition Documentation

◆ DATA_SWAP

#define DATA_SWAP ( id)
Value:
{ \
UserDef userdef_tmp; \
memcpy(&(userdef_tmp.id), &(userdef_a->id), sizeof(userdef_tmp.id)); \
memcpy(&(userdef_a->id), &(userdef_b->id), sizeof(userdef_tmp.id)); \
memcpy(&(userdef_b->id), &(userdef_tmp.id), sizeof(userdef_tmp.id)); \
} \
((void)0)

Referenced by BKE_blender_userdef_app_template_data_swap().

◆ FLAG_SWAP

#define FLAG_SWAP ( id,
ty,
flags )
Value:
{ \
CHECK_TYPE(&(userdef_a->id), ty *); \
const ty f = flags; \
const ty a = userdef_a->id; \
const ty b = userdef_b->id; \
userdef_a->id = (userdef_a->id & ~f) | (b & f); \
userdef_b->id = (userdef_b->id & ~f) | (a & f); \
} \
((void)0)
local_group_size(16, 16) .push_constant(Type b

Referenced by BKE_blender_userdef_app_template_data_swap().

◆ U

◆ VALUE_SWAP

#define VALUE_SWAP ( id)
Value:
{ \
std::swap(userdef_a->id, userdef_b->id); \
}

Referenced by BKE_blender_userdef_app_template_data_swap().

Function Documentation

◆ BKE_blender_atexit()

void BKE_blender_atexit ( )

◆ BKE_blender_atexit_register()

void BKE_blender_atexit_register ( void(* func )(void *user_data),
void * user_data )

◆ BKE_blender_atexit_unregister()

void BKE_blender_atexit_unregister ( void(* func )(void *user_data),
const void * user_data )

Definition at line 475 of file blender.cc.

References free(), AtExitData::func, g_atexit, AtExitData::next, and AtExitData::user_data.

Referenced by main().

◆ BKE_blender_free()

◆ BKE_blender_globals_clear()

void BKE_blender_globals_clear ( )

Definition at line 207 of file blender.cc.

References BKE_main_free(), BLI_assert, and G_MAIN.

Referenced by BKE_blender_free(), and BKE_blender_globals_main_replace().

◆ BKE_blender_globals_init()

◆ BKE_blender_globals_main_replace()

void BKE_blender_globals_main_replace ( Main * bmain)

Replace current global Main by the given one, freeing existing one.

Definition at line 218 of file blender.cc.

References BKE_blender_globals_clear(), BLI_assert, G_MAIN, and Main::is_global_main.

Referenced by BKE_blender_globals_init(), and setup_app_data().

◆ BKE_blender_globals_main_swap()

Main * BKE_blender_globals_main_swap ( Main * new_gmain)

Replace current global Main by the given one, returning the old one.

Warning
Advanced, risky workaround addressing the issue that current RNA is not able to process correctly non-G_MAIN data, use with (a lot of) care.

Definition at line 226 of file blender.cc.

References BLI_assert, G_MAIN, and Main::is_global_main.

Referenced by BKE_lib_override_library_main_update(), and do_versions_after_linking_280().

◆ BKE_blender_userdef_app_template_data_set()

void BKE_blender_userdef_app_template_data_set ( UserDef * userdef)

◆ BKE_blender_userdef_app_template_data_set_and_free()

void BKE_blender_userdef_app_template_data_set_and_free ( UserDef * userdef)

Definition at line 445 of file blender.cc.

References BKE_blender_userdef_app_template_data_set(), and MEM_freeN().

Referenced by wm_homefile_read_ex().

◆ BKE_blender_userdef_app_template_data_swap()

void BKE_blender_userdef_app_template_data_swap ( UserDef * userdef_a,
UserDef * userdef_b )

This function defines which settings a template will override for the user preferences.

Note
the order of userdef_a & userdef_b isn't important as values are simply swapped.

Definition at line 384 of file blender.cc.

References DATA_SWAP, FLAG_SWAP, USER_SAVE_PROMPT, USER_SHOW_GIZMO_NAVIGATE, USER_SPLASH_DISABLE, and VALUE_SWAP.

Referenced by BKE_blender_userdef_app_template_data_set(), and BKE_blendfile_userdef_write_app_template().

◆ BKE_blender_userdef_data_free()

◆ BKE_blender_userdef_data_set()

void BKE_blender_userdef_data_set ( UserDef * userdef)

◆ BKE_blender_userdef_data_set_and_free()

void BKE_blender_userdef_data_set_and_free ( UserDef * userdef)

Definition at line 264 of file blender.cc.

References BKE_blender_userdef_data_set(), and MEM_freeN().

Referenced by setup_app_userdef(), and wm_homefile_read_ex().

◆ BKE_blender_userdef_data_swap()

void BKE_blender_userdef_data_swap ( UserDef * userdef_a,
UserDef * userdef_b )

Definition at line 253 of file blender.cc.

Referenced by BKE_blender_userdef_data_set().

◆ BKE_blender_version_blendfile_string_from_values()

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 )

Fill in given string buffer with user-readable formatted file version and subversion (if provided).

Parameters
str_buffa char buffer where the formatted string is written, minimal recommended size is 8, or 16 if subversion is provided.
file_subversionthe file subversion, if given value < 0, it is ignored, and only the file_version is used.

Definition at line 149 of file blender.cc.

References BLI_snprintf().

Referenced by file_overwrite_detailed_info_show(), is_minversion_older_than_blender(), and ui_template_status_tooltip().

◆ BKE_blender_version_is_alpha()

bool BKE_blender_version_is_alpha ( void )

Returns true when version cycle is alpha, otherwise (beta, rc) returns false.

Definition at line 169 of file blender.cc.

References BLENDER_VERSION_CYCLE, STREQ, and STRINGIFY.

Referenced by BLO_sanitize_experimental_features_userpref_blend().

◆ BKE_blender_version_is_lts()

bool BKE_blender_version_is_lts ( void )

Returns true when version suffix is LTS, otherwise returns false.

Definition at line 175 of file blender.cc.

References BLENDER_VERSION_SUFFIX, STREQ, and STRINGIFY.

Referenced by blender_version_init().

◆ BKE_blender_version_string()

◆ BKE_blender_version_string_compact()

const char * BKE_blender_version_string_compact ( void )

As above but does not show patch version.

Definition at line 144 of file blender.cc.

References blender_version_string_compact.

Referenced by ED_info_statusbar_string_ex().

◆ blender_version_init()

◆ keymap_item_free()

static void keymap_item_free ( wmKeyMapItem * kmi)
static

Definition at line 243 of file blender.cc.

References IDP_FreeProperty(), wmKeyMapItem::properties, and wmKeyMapItem::ptr.

Referenced by userdef_free_keymaps().

◆ userdef_free_addons()

static void userdef_free_addons ( UserDef * userdef)
static

◆ userdef_free_keyconfig_prefs()

static void userdef_free_keyconfig_prefs ( UserDef * userdef)
static

◆ userdef_free_keymaps()

static void userdef_free_keymaps ( UserDef * userdef)
static

◆ userdef_free_user_menus()

static void userdef_free_user_menus ( UserDef * userdef)
static

Variable Documentation

◆ blender_version_string

char blender_version_string[48] = ""
static

Definition at line 92 of file blender.cc.

Referenced by BKE_blender_version_string(), and blender_version_init().

◆ blender_version_string_compact

char blender_version_string_compact[48] = ""
static

Definition at line 95 of file blender.cc.

Referenced by BKE_blender_version_string_compact(), and blender_version_init().

◆ G

Global G

Defined in blender.cc

Definition at line 47 of file blender.cc.

Referenced by BKE_blender_free(), and BKE_blender_globals_init().

◆ g_atexit

struct AtExitData * g_atexit = nullptr
static

◆ U