Blender  V3.3
Classes | Macros | Variables
blender.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "MEM_guardedalloc.h"
#include "BLI_listbase.h"
#include "BLI_string.h"
#include "BLI_utildefines.h"
#include "IMB_imbuf.h"
#include "IMB_moviecache.h"
#include "BKE_addon.h"
#include "BKE_blender.h"
#include "BKE_blender_user_menu.h"
#include "BKE_blender_version.h"
#include "BKE_blendfile.h"
#include "BKE_brush.h"
#include "BKE_cachefile.h"
#include "BKE_callbacks.h"
#include "BKE_global.h"
#include "BKE_idprop.h"
#include "BKE_image.h"
#include "BKE_layer.h"
#include "BKE_main.h"
#include "BKE_node.h"
#include "BKE_report.h"
#include "BKE_scene.h"
#include "BKE_screen.h"
#include "BKE_studiolight.h"
#include "DEG_depsgraph.h"
#include "RE_pipeline.h"
#include "RE_texture.h"
#include "SEQ_sequencer.h"
#include "BLF_api.h"

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 DATA_SWAP(id)
 
#define LIST_SWAP(id)
 
#define FLAG_SWAP(id, ty, flags)
 

Functions

Blender Free on Exit
void BKE_blender_free (void)
 
Blender #Global Initialize/Clear
void BKE_blender_globals_init (void)
 
void BKE_blender_globals_clear (void)
 
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 void blender_version_init (void)
 
const char * BKE_blender_version_string (void)
 
void BKE_blender_version_blendfile_string_from_values (char *str_buff, const size_t str_buff_len, const short file_version, const short file_subversion)
 
bool BKE_blender_version_is_alpha (void)
 

Blender's AtExit

Note
Don't use MEM_mallocN so functions can be registered at any time.
static struct AtExitDatag_atexit = NULL
 
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 (void)
 

Detailed Description

Application level startup/shutdown functionality.

Definition in file blender.c.

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)
SyclQueue void void size_t num_bytes void

◆ 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)
static unsigned a[3]
Definition: RandGen.cpp:78
static const pxr::TfToken b("b", pxr::TfToken::Immortal)

◆ LIST_SWAP

#define LIST_SWAP (   id)
Value:
{ \
SWAP(ListBase, userdef_a->id, userdef_b->id); \
} \
((void)0)

◆ U

#define U   BLI_STATIC_ASSERT(false, "Global 'U' not allowed, only use arguments passed in!")

Function Documentation

◆ BKE_blender_atexit()

void BKE_blender_atexit ( void  )

◆ BKE_blender_atexit_register()

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

◆ BKE_blender_atexit_unregister()

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

Definition at line 405 of file blender.c.

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

Referenced by main().

◆ BKE_blender_free()

void BKE_blender_free ( void  )

◆ BKE_blender_globals_clear()

void BKE_blender_globals_clear ( void  )

Definition at line 182 of file blender.c.

References BKE_main_free(), G_MAIN, and NULL.

Referenced by setup_app_data().

◆ BKE_blender_globals_init()

void BKE_blender_globals_init ( void  )

◆ 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 375 of file blender.c.

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 ( struct UserDef userdef_a,
struct UserDef userdef_b 
)

Write U from userdef. This function defines which settings a template will override for the user preferences.

Definition at line 312 of file blender.c.

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

Referenced by BKE_blender_userdef_app_template_data_set(), and BKE_blendfile_userdef_write_app_template().

◆ BKE_blender_userdef_data_free()

void BKE_blender_userdef_data_free ( struct UserDef userdef,
bool  clear_fonts 
)

◆ 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 216 of file blender.c.

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 205 of file blender.c.

References SWAP.

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_len,
const short  file_version,
const short  file_subversion 
)

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

Parameters
str_buffa char buffer where the formated 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 129 of file blender.c.

References BLI_snprintf().

Referenced by file_forwardcompat_detailed_info_show(), is_minversion_older_than_blender(), and uiTemplateStatusInfo().

◆ BKE_blender_version_is_alpha()

bool BKE_blender_version_is_alpha ( void  )

Definition at line 149 of file blender.c.

References BLENDER_VERSION_CYCLE, STREQ, and STRINGIFY.

Referenced by BLO_sanitize_experimental_features_userpref_blend().

◆ BKE_blender_version_string()

const char* BKE_blender_version_string ( void  )

◆ blender_version_init()

static void blender_version_init ( void  )
static

◆ keymap_item_free()

static void keymap_item_free ( wmKeyMapItem kmi)
static

Definition at line 195 of file blender.c.

References IDP_FreeProperty(), MEM_freeN, 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 94 of file blender.c.

Referenced by BKE_blender_version_string(), and blender_version_init().

◆ G

Global G

Defined in blender.c

Definition at line 51 of file blender.c.

Referenced by BKE_blender_free(), and BKE_blender_globals_init().

◆ g_atexit

struct AtExitData * g_atexit = NULL
static

◆ U

From blenkernel blender.c.

Definition at line 52 of file blender.c.