16 #if defined(WITH_TBB_MALLOC) && defined(_MSC_VER) && defined(NDEBUG)
17 # pragma comment(lib, "tbbmalloc_proxy.lib")
18 # pragma comment(linker, "/include:__TBB_malloc_proxy")
76 # include <floatingpoint.h>
80 # include "binreloc.h"
87 #ifdef WITH_CYCLES_LOGGING
91 #ifdef WITH_SDL_DYNLOAD
106 .use_abort_handler =
true,
108 .exit_code_on_error =
124 fputs(errorStr, stderr);
147 if (app_init_data->
ba) {
153 if (app_init_data->argv) {
154 while (app_init_data->argv_num) {
155 free((
void *)app_init_data->argv[--app_init_data->argv_num]);
157 free((
void *)app_init_data->argv);
158 app_init_data->argv =
NULL;
177 #ifdef WITH_PYTHON_MODULE
180 int main_python_enter(
int argc,
const char **argv);
181 void main_python_exit(
void);
184 # define main main_python_enter
185 static void *evil_C =
NULL;
189 # include <crt_externs.h>
190 char **environ =
NULL;
201 #if (defined(WITH_TBB_MALLOC) && defined(_MSC_VER) && defined(NDEBUG) && defined(WITH_GMP)) || \
204 # include "tbb/scalable_allocator.h"
208 return scalable_malloc(
size);
212 return scalable_realloc(
ptr, new_size);
246 const char **
UNUSED(argv_c)
254 #ifndef WITH_PYTHON_MODULE
275 setvbuf(stdout,
NULL, _IONBF, 0);
280 # if defined(_MSC_VER)
281 _putenv_s(
"OMP_WAIT_POLICY",
"PASSIVE");
289 wchar_t **argv_16 = CommandLineToArgvW(GetCommandLineW(), &argc);
290 argv = malloc(argc *
sizeof(
char *));
291 for (argv_num = 0; argv_num < argc; argv_num++) {
297 app_init_data.argv = argv;
298 app_init_data.argv_num = argv_num;
308 for (i = 0; i < argc; i++) {
309 if (
STR_ELEM(argv[i],
"-d",
"--debug",
"--debug-memory",
"--debug-all")) {
310 printf(
"Switching to fully guarded memory allocator.\n");
314 if (
STREQ(argv[i],
"--")) {
324 struct tm *tm = gmtime(&temp_time);
330 const char *unknown =
"date-unknown";
337 #ifdef WITH_SDL_DYNLOAD
347 #ifdef WITH_PYTHON_MODULE
349 environ = *_NSGetEnviron();
362 #elif defined(WITH_CYCLES_LOGGING)
366 #if defined(WITH_TBB_MALLOC) && defined(_MSC_VER) && defined(NDEBUG) && defined(WITH_GMP)
372 #if defined(__APPLE__) && !defined(WITH_PYTHON_MODULE) && !defined(WITH_HEADLESS)
374 if (argc == 2 &&
STRPREFIX(argv[1],
"-psn_")) {
376 static char firstfilebuf[512];
382 argv[1] = firstfilebuf;
414 #ifndef WITH_PYTHON_MODULE
418 app_init_data.
ba = ba;
431 G.factory_startup =
true;
444 #ifndef WITH_PYTHON_MODULE
464 #if defined(WITH_PYTHON_MODULE) || defined(WITH_HEADLESS)
482 #ifndef WITH_PYTHON_MODULE
483 if (
G.background == 0) {
489 WM_init(
C, argc, (
const char **)argv);
496 "\n* WARNING * - Blender compiled without Python!\n"
497 "this is not intended for typical usage\n\n");
503 #ifdef WITH_FREESTYLE
510 #ifndef WITH_PYTHON_MODULE
526 #ifndef WITH_PYTHON_MODULE
536 #ifndef WITH_PYTHON_MODULE
544 if (blendfile_path[0] ==
'\0') {
554 #ifdef WITH_PYTHON_MODULE
555 void main_python_exit(
void)
void BKE_appdir_init(void)
void BKE_appdir_program_path_init(const char *argv0)
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_globals_init(void)
void BKE_brush_system_init(void)
void BKE_cachefiles_init(void)
void BKE_callback_global_init(void)
bContext * CTX_create(void)
void CTX_py_init_set(bContext *C, bool value)
void BKE_gpencil_modifier_init(void)
void BKE_idtype_init(void)
const char * BKE_main_blendfile_path_from_global(void)
General operations, lookup, etc. for materials.
void BKE_materials_init(void)
void BKE_modifier_init(void)
void BKE_node_system_init(void)
void BKE_particle_init_rng(void)
void BKE_shaderfx_init(void)
void BKE_sound_init_once(void)
void BKE_vfont_builtin_register(const void *mem, int size)
void BKE_volumes_init(void)
A general argument parsing module.
void BLI_args_parse(struct bArgs *ba, int pass, BA_ArgCallback default_cb, void *data)
void BLI_args_destroy(struct bArgs *ba)
struct bArgs * BLI_args_create(int argc, const char **argv)
void BLI_kdtree_nd_() free(KDTree *tree)
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
void BLI_system_backtrace(FILE *fp)
void BLI_task_scheduler_init(void)
void BLI_threadapi_init(void)
void CCL_init_logging(const char *argv0)
void CLG_fatal_fn_set(void(*fatal_fn)(void *file_handle))
void DEG_register_node_types(void)
blenloader genfile private function prototypes
void DNA_sdna_current_init(void)
const char datatoc_bfont_pfb[]
int datatoc_bfont_pfb_size
void FRS_set_context(struct bContext *C)
int GHOST_HACK_getFirstFile(char buf[FIRSTFILEBUFLG])
void IMB_ffmpeg_init(void)
Read Guarded memory(de)allocation.
ulong build_commit_timestamp
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
static void callback_main_atexit(void *user_data)
int main(int argc, const char **argv)
void * gmp_realloc(void *ptr, size_t old_size, size_t new_size)
struct ApplicationState app_state
void gmp_free(void *ptr, size_t size)
void gmp_blender_init_allocator()
static void main_callback_setup(void)
static void callback_mem_error(const char *errorStr)
void * gmp_alloc(size_t size)
static void callback_clg_fatal(void *fp)
void main_args_setup(bContext *C, bArgs *ba)
void main_args_setup_post(bContext *C, bArgs *ba)
void main_signal_setup_background(void)
@ ARG_PASS_SETTINGS_FORCE
void main_signal_setup(void)
SyclQueue void void size_t num_bytes void
void RE_engines_init(void)
void RE_engines_init_experimental()
void MEM_use_memleak_detection(bool enabled)
void MEM_init_memleak_detection()
void libmv_initLogging(const char *argv0)
void MEM_use_guarded_allocator(void)
void(* MEM_set_error_callback)(void(*func)(const char *))
struct ApplicationState::@1221 signal
void RE_texture_rng_init(void)
char * alloc_utf_8_from_16(const wchar_t *in16, size_t add)
void WM_main(bContext *C)
void WM_keyconfig_init(bContext *C)
void WM_init_splash(bContext *C)
void WM_exit_ex(bContext *C, const bool do_python)
void WM_exit(bContext *C)
Main exit function to close Blender ordinarily.
void WM_init(bContext *C, int argc, const char **argv)