Blender  V3.3
Classes | Typedefs | Enumerations | Functions
BKE_callbacks.h File Reference

Go to the source code of this file.

Classes

struct  bCallbackFuncStore
 

Typedefs

typedef struct bCallbackFuncStore bCallbackFuncStore
 

Enumerations

enum  eCbEvent {
  BKE_CB_EVT_FRAME_CHANGE_PRE , BKE_CB_EVT_FRAME_CHANGE_POST , BKE_CB_EVT_RENDER_PRE , BKE_CB_EVT_RENDER_POST ,
  BKE_CB_EVT_RENDER_WRITE , BKE_CB_EVT_RENDER_STATS , BKE_CB_EVT_RENDER_INIT , BKE_CB_EVT_RENDER_COMPLETE ,
  BKE_CB_EVT_RENDER_CANCEL , BKE_CB_EVT_LOAD_PRE , BKE_CB_EVT_LOAD_POST , BKE_CB_EVT_SAVE_PRE ,
  BKE_CB_EVT_SAVE_POST , BKE_CB_EVT_UNDO_PRE , BKE_CB_EVT_UNDO_POST , BKE_CB_EVT_REDO_PRE ,
  BKE_CB_EVT_REDO_POST , BKE_CB_EVT_DEPSGRAPH_UPDATE_PRE , BKE_CB_EVT_DEPSGRAPH_UPDATE_POST , BKE_CB_EVT_VERSION_UPDATE ,
  BKE_CB_EVT_LOAD_FACTORY_USERDEF_POST , BKE_CB_EVT_LOAD_FACTORY_STARTUP_POST , BKE_CB_EVT_XR_SESSION_START_PRE , BKE_CB_EVT_ANNOTATION_PRE ,
  BKE_CB_EVT_ANNOTATION_POST , BKE_CB_EVT_OBJECT_BAKE_PRE , BKE_CB_EVT_OBJECT_BAKE_COMPLETE , BKE_CB_EVT_OBJECT_BAKE_CANCEL ,
  BKE_CB_EVT_COMPOSITE_PRE , BKE_CB_EVT_COMPOSITE_POST , BKE_CB_EVT_COMPOSITE_CANCEL , BKE_CB_EVT_TOT
}
 

Functions

void BKE_callback_exec (struct Main *bmain, struct PointerRNA **pointers, int num_pointers, eCbEvent evt)
 
void BKE_callback_exec_null (struct Main *bmain, eCbEvent evt)
 
void BKE_callback_exec_id (struct Main *bmain, struct ID *id, eCbEvent evt)
 
void BKE_callback_exec_id_depsgraph (struct Main *bmain, struct ID *id, struct Depsgraph *depsgraph, eCbEvent evt)
 
void BKE_callback_add (bCallbackFuncStore *funcstore, eCbEvent evt)
 
void BKE_callback_remove (bCallbackFuncStore *funcstore, eCbEvent evt)
 
void BKE_callback_global_init (void)
 
void BKE_callback_global_finalize (void)
 

Typedef Documentation

◆ bCallbackFuncStore

Enumeration Type Documentation

◆ eCbEvent

enum eCbEvent

Callbacks for One Off Actions

  • {ACTION} use in cases where only a single callback is required, VERSION_UPDATE and RENDER_STATS for example.
Note
avoid single callbacks if there is a chance PRE/POST are useful to differentiate since renaming callbacks may break Python scripts.

Callbacks for Common Actions

  • {ACTION}_PRE run before the action.
  • {ACTION}_POST run after the action.

Optional Additional Callbacks

  • {ACTION}_INIT when the handler may manipulate the context used to run the action.

    Examples where INIT functions may be useful are:

    • When rendering, an INIT function may change the camera or render settings, things which a PRE function can't support as this information has already been used.
    • When saving an INIT function could temporarily change the preferences.
  • {ACTION}_POST_FAIL should be included if the action may fail.

    Use this so a call to the PRE callback always has a matching call to POST or POST_FAIL.

Note
in most cases only PRE/POST are required.

Callbacks for Background/Modal Tasks

  • {ACTION}_INIT
  • {ACTION}_COMPLETE when a background job has finished.
  • {ACTION}_CANCEL When a background job is canceled partway through.

    While cancellation may be caused by any number of reasons, common causes may include:

    • Explicit user cancellation.
    • Exiting Blender.
    • Failure to acquire resources (such as disk-full, out of memory ... etc).
Note
PRE/POST handlers may be used along side modal task handlers as is the case for rendering, where rendering an animation uses modal task handlers, rendering a single frame has PRE/POST handlers.

Python Access

All callbacks here must be exposed via the Python module bpy.app.handlers, see bpy_app_handlers.c.

Enumerator
BKE_CB_EVT_FRAME_CHANGE_PRE 
BKE_CB_EVT_FRAME_CHANGE_POST 
BKE_CB_EVT_RENDER_PRE 
BKE_CB_EVT_RENDER_POST 
BKE_CB_EVT_RENDER_WRITE 
BKE_CB_EVT_RENDER_STATS 
BKE_CB_EVT_RENDER_INIT 
BKE_CB_EVT_RENDER_COMPLETE 
BKE_CB_EVT_RENDER_CANCEL 
BKE_CB_EVT_LOAD_PRE 
BKE_CB_EVT_LOAD_POST 
BKE_CB_EVT_SAVE_PRE 
BKE_CB_EVT_SAVE_POST 
BKE_CB_EVT_UNDO_PRE 
BKE_CB_EVT_UNDO_POST 
BKE_CB_EVT_REDO_PRE 
BKE_CB_EVT_REDO_POST 
BKE_CB_EVT_DEPSGRAPH_UPDATE_PRE 
BKE_CB_EVT_DEPSGRAPH_UPDATE_POST 
BKE_CB_EVT_VERSION_UPDATE 
BKE_CB_EVT_LOAD_FACTORY_USERDEF_POST 
BKE_CB_EVT_LOAD_FACTORY_STARTUP_POST 
BKE_CB_EVT_XR_SESSION_START_PRE 
BKE_CB_EVT_ANNOTATION_PRE 
BKE_CB_EVT_ANNOTATION_POST 
BKE_CB_EVT_OBJECT_BAKE_PRE 
BKE_CB_EVT_OBJECT_BAKE_COMPLETE 
BKE_CB_EVT_OBJECT_BAKE_CANCEL 
BKE_CB_EVT_COMPOSITE_PRE 
BKE_CB_EVT_COMPOSITE_POST 
BKE_CB_EVT_COMPOSITE_CANCEL 
BKE_CB_EVT_TOT 

Definition at line 74 of file BKE_callbacks.h.

Function Documentation

◆ BKE_callback_add()

void BKE_callback_add ( bCallbackFuncStore funcstore,
eCbEvent  evt 
)

◆ BKE_callback_exec()

void BKE_callback_exec ( struct Main bmain,
struct PointerRNA **  pointers,
int  num_pointers,
eCbEvent  evt 
)

◆ BKE_callback_exec_id()

void BKE_callback_exec_id ( struct Main bmain,
struct ID id,
eCbEvent  evt 
)

◆ BKE_callback_exec_id_depsgraph()

void BKE_callback_exec_id_depsgraph ( struct Main bmain,
struct ID id,
struct Depsgraph depsgraph,
eCbEvent  evt 
)

◆ BKE_callback_exec_null()

void BKE_callback_exec_null ( struct Main bmain,
eCbEvent  evt 
)

◆ BKE_callback_global_finalize()

void BKE_callback_global_finalize ( void  )

◆ BKE_callback_global_init()

void BKE_callback_global_init ( void  )

◆ BKE_callback_remove()

void BKE_callback_remove ( bCallbackFuncStore funcstore,
eCbEvent  evt 
)