174 if (
G.is_rendering) {
271 read_homefile_params.
use_data =
true;
272 read_homefile_params.use_userdef =
true;
273 read_homefile_params.use_factory_settings =
G.factory_startup;
274 read_homefile_params.use_empty_data =
false;
275 read_homefile_params.filepath_startup_override =
nullptr;
277 read_homefile_params.is_first_time =
true;
294#ifdef WITH_INPUT_NDOF
296 WM_ndof_deadzone_set(
U.ndof_deadzone);
364 bool use_splash =
false;
367 if (blendfile_path[0] ==
'\0') {
375 if (cfgdir.has_value()) {
417 const char *imports[] = {
"bpy",
nullptr};
467 BLI_assert(
G.background ? (do_user_exit_actions ==
false) :
true);
473 if (do_user_exit_actions) {
477 int fileflags =
G.fileflags & ~G_FILE_COMPRESS;
485 if (
BLO_write_file(bmain, filepath, fileflags, &blend_file_write_params,
nullptr)) {
487 printf(
"Saved session recovery to \"%s\"\n", filepath);
505 if (do_user_exit_actions) {
507 if (
U.runtime.is_dirty) {
517#if defined(WITH_PYTHON) && !defined(WITH_PYTHON_MODULE)
536 const char *imports[2] = {
"addon_utils",
nullptr};
578 ed::asset::list::storage_exit();
584 ed::greasepencil::clipboard_free();
588#ifdef WITH_COMPOSITOR_CPU
648 (void)do_python_exit;
702 const bool do_user_exit_actions =
G.background ?
false : (exit_code == EXIT_SUCCESS);
706 printf(
"\nBlender quit\n");
void BKE_addon_pref_type_free(void)
void BKE_addon_pref_type_init(void)
#define BLENDER_USERPREF_FILE
std::optional< std::string > BKE_appdir_folder_id(int folder_id, const char *subfolder) ATTR_WARN_UNUSED_RESULT
#define BLENDER_QUIT_FILE
const char * BKE_tempdir_base() ATTR_WARN_UNUSED_RESULT ATTR_RETURNS_NONNULL
void BKE_tempdir_session_purge()
void BKE_blender_atexit()
void BKE_blender_userdef_data_free(UserDef *userdef, bool clear_fonts)
Blender CLI Generic --command Support.
void BKE_blender_cli_command_free_all()
bool BKE_blendfile_userdef_write_all(ReportList *reports)
bool CTX_py_init_get(bContext *C)
void CTX_py_init_set(bContext *C, bool value)
wmWindow * CTX_wm_window(const bContext *C)
void CTX_free(bContext *C)
void CTX_wm_window_set(bContext *C, wmWindow *win)
Main * CTX_data_main(const bContext *C)
wmWindowManager * CTX_wm_manager(const bContext *C)
@ G_FLAG_USERPREF_NO_SAVE_ON_EXIT
@ G_DEBUG_GPU_COMPILE_SHADERS
void BKE_icons_init(int first_dyn_id)
void BKE_image_free_unused_gpu_textures(void)
void BKE_keyconfig_pref_type_init(void)
void BKE_keyconfig_pref_type_free(void)
void BKE_library_callback_remap_editor_id_reference_set(BKE_library_remap_editor_id_reference_cb func)
void BKE_library_callback_free_notifier_reference_set(BKE_library_free_notifier_reference_cb func)
const char * BKE_main_blendfile_path_from_global()
void BKE_mask_clipboard_free(void)
General operations, lookup, etc. for materials.
void BKE_materials_exit(void)
void BKE_mball_cubeTable_free()
void BKE_preview_images_init()
Depsgraph * BKE_scene_get_depsgraph(const Scene *scene, const ViewLayer *view_layer)
void BKE_region_callback_free_gizmomap_set(void(*callback)(wmGizmoMap *))
void BKE_spacedata_callback_id_remap_set(void(*func)(ScrArea *area, SpaceLink *sl, ID *old_id, ID *new_id))
void BKE_region_callback_refresh_tag_gizmomap_set(void(*callback)(wmGizmoMap *))
void BKE_sound_jack_sync_callback_set(SoundJackSyncCallback callback)
void BKE_sound_lock(void)
void BKE_sound_jack_scene_update(struct Scene *scene, int mode, double time)
void BKE_sound_unlock(void)
void BKE_sound_exit(void)
void BKE_studiolight_init(void)
void BKE_tracking_clipboard_free(void)
void BKE_vfont_clipboard_free()
File and directory operations.
int BLI_exists(const char *path) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
#define LISTBASE_FOREACH(type, var, list)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
#define BLI_path_join(...)
#define STRNCPY(dst, src)
void BLI_task_scheduler_exit(void)
void BLI_threadapi_exit(void)
void BLI_timer_free(void)
external writefile.cc function prototypes.
bool BLO_write_file(Main *mainvar, const char *filepath, int write_flags, const BlendFileWriteParams *params, ReportList *reports)
void BLT_lang_set(const char *)
void BPY_python_end(bool do_python_exit)
void BPY_python_reset(bContext *C)
void BPY_python_start(bContext *C, int argc, const char **argv)
bool BPY_run_string_eval(bContext *C, const char *imports[], const char *expr)
#define CLG_LOGREF_DECLARE_GLOBAL(var, id)
void COM_deinitialize()
Deinitialize the compositor caches and allocated memory. Use COM_clear_caches to only free the caches...
void DEG_editors_set_update_cb(DEG_EditorUpdateIDCb id_func, DEG_EditorUpdateSceneCb scene_func)
Scene * DEG_get_evaluated_scene(const Depsgraph *graph)
blenloader genfile private function prototypes
void DNA_sdna_current_free(void)
void DRW_gpu_context_destroy()
void DRW_gpu_context_disable_ex(bool restore)
void DRW_gpu_context_create()
void DRW_gpu_context_enable_ex(bool restore)
void ED_node_clipboard_free()
void ED_node_init_butfuncs()
void ED_render_clear_mtex_copybuf()
void ED_preview_free_dbase()
void ED_render_id_flush_update(const DEGEditorUpdateContext *update_ctx, ID *id)
void ED_preview_restart_queue_free()
void ED_render_scene_update(const DEGEditorUpdateContext *update_ctx, bool updated)
void ED_screen_exit(bContext *C, wmWindow *window, bScreen *screen)
void ED_spacetypes_init()
void ED_spacemacros_init()
void ED_undosys_type_free()
void ED_undosys_type_init()
void ED_editors_exit(Main *bmain, bool do_undo_system)
void ED_spacedata_id_remap_single(ScrArea *area, SpaceLink *sl, ID *old_id, ID *new_id)
bool ED_editors_flush_edits(Main *bmain)
GHOST C-API function and type declarations.
bool GHOST_setConsoleWindowState(GHOST_TConsoleWindowState action)
@ GHOST_kConsoleWindowStateShow
@ GHOST_kConsoleWindowStateHideForNonConsoleLaunch
bool GPU_backend_supported()
void GPU_context_begin_frame(GPUContext *ctx)
GPUContext * GPU_context_active_get()
void GPU_context_end_frame(GPUContext *ctx)
void GPU_pass_cache_init()
void GPU_pass_cache_free()
void GPU_shader_cache_dir_clear_old()
void GPU_shader_compile_static()
Read Guarded memory(de)allocation.
void UI_interface_tag_script_reload()
CLG_LogRef * WM_LOG_MSGBUS_PUB
CLG_LogRef * WM_LOG_OPERATORS
CLG_LogRef * WM_LOG_HANDLERS
CLG_LogRef * WM_LOG_EVENTS
CLG_LogRef * WM_LOG_TOOLS
CLG_LogRef * WM_LOG_MSGBUS_SUB
CLG_LogRef * WM_LOG_KEYMAPS
#define WM_UI_HANDLER_BREAK
const Depsgraph * depsgraph
void ANIM_drivers_copybuf_free()
void ANIM_driver_vars_copybuf_free()
void ED_gpencil_anim_copybuf_free()
void ANIM_fmodifiers_copybuf_free()
void ED_gpencil_strokes_copybuf_free()
void ANIM_fcurves_copybuf_free()
void ANIM_keyingset_infos_exit()
void MEM_freeN(void *vmemh)
void read_recent_searches_file()
void write_recent_searches_file()
void WM_keyconfig_init(bContext *C)
void wm_init_cursor_data()
wmEventHandler_UI * WM_event_add_ui_handler(const bContext *C, ListBase *handlers, wmUIHandlerFunc handle_fn, wmUIHandlerRemoveFunc remove_fn, void *user_data, const eWM_EventHandlerFlag flag)
void WM_main_remap_editor_id_reference(const blender::bke::id::IDRemapper &mappings)
void WM_main_remove_notifier_reference(const void *reference)
int WM_operator_name_call(bContext *C, const char *opstring, wmOperatorCallContext context, PointerRNA *properties, const wmEvent *event)
void WM_event_remove_handlers(bContext *C, ListBase *handlers)
void WM_event_add_mousemove(wmWindow *win)
void wm_test_autorun_revert_action_set(wmOperatorType *ot, PointerRNA *ptr)
const char * WM_init_state_app_template_get()
void wm_history_file_read()
void wm_autosave_delete()
void wm_homefile_read_ex(bContext *C, const wmHomeFileRead_Params *params_homefile, ReportList *reports, wmFileReadPost_Params **r_params_file_read_post)
void wm_homefile_read_post(bContext *C, const wmFileReadPost_Params *params_file_read_post)
void wm_gizmogrouptype_init()
void wm_gizmogrouptype_free()
void wm_gizmomaptypes_free()
void WM_gizmomap_tag_refresh(wmGizmoMap *gzmap)
void wm_gizmomap_remove(wmGizmoMap *gzmap)
void WM_gizmoconfig_update_tag_reinit_all()
static void free_openrecent()
void WM_script_tag_reload()
void WM_init_splash(bContext *C)
void WM_init_splash_on_startup(bContext *C)
static int wm_exit_handler(bContext *C, const wmEvent *event, void *userdata)
void WM_exit(bContext *C, const int exit_code)
static bool wm_init_splash_show_on_startup_check()
void WM_exit_ex(bContext *C, const bool do_python_exit, const bool do_user_exit_actions)
void WM_init(bContext *C, int argc, const char **argv)
static bool wm_start_with_console
void wm_exit_schedule_delayed(const bContext *C)
void WM_init_state_start_with_console_set(bool value)
static void sound_jack_sync_callback(Main *bmain, int mode, double time)
static void wm_init_scripts_extensions_once(bContext *C)
void WM_jobs_kill_all(wmWindowManager *wm)
void WM_keyconfig_update(wmWindowManager *wm)
void WM_keyconfig_update_postpone_end()
void WM_keyconfig_update_postpone_begin()
void WM_msgbus_types_init()
void wm_operatortype_free()
void wm_operatortypes_register()
void WM_paneltype_clear()
void WM_uilisttype_free()
void WM_uilisttype_init()
void wm_ghost_init_background()
ViewLayer * WM_window_get_active_view_layer(const wmWindow *win)
Scene * WM_window_get_active_scene(const wmWindow *win)
void wm_ghost_init(bContext *C)
bScreen * WM_window_get_active_screen(const wmWindow *win)