46 const uint gset_reserve = 512;
67 for (msg_key = mbus->
messages.
first; msg_key; msg_key = msg_key_next) {
68 msg_key_next = msg_key->
next;
72 msg_lnk = msg_lnk_next) {
73 msg_lnk_next = msg_lnk->
next;
74 if (msg_lnk->params.owner == owner) {
75 if (msg_lnk->params.tag) {
78 if (msg_lnk->params.free_data) {
79 msg_lnk->params.free_data(msg_key, &msg_lnk->params);
99 printf(
">>>> %s\n", info_str);
103 info->
repr(stdout, key);
105 printf(
"<<<< %s\n", info_str);
122 if (msg_lnk->params.tag) {
123 msg_lnk->params.notify(
C, key, &msg_lnk->params);
124 msg_lnk->params.tag =
false;
155 if ((msg_lnk->params.notify == msg_val_params->
notify) &&
156 (msg_lnk->params.owner == msg_val_params->
owner) &&
157 (msg_lnk->params.user_data == msg_val_params->
user_data)) {
164 msg_lnk->
params = *msg_val_params;
173 "tagging subscribers: (ptr=%p, len=%d)",
179 msg_lnk->params.notify(
NULL, msg_key, &msg_lnk->params);
182 if (msg_lnk->params.tag ==
false) {
183 msg_lnk->params.tag =
true;
bool BLI_gset_ensure_p_ex(GSet *gs, const void *key, void ***r_key)
GSet * BLI_gset_new_ex(GSetHashFP hashfp, GSetCmpFP cmpfp, const char *info, unsigned int nentries_reserve) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
void BLI_gset_free(GSet *gs, GSetKeyFreeFP keyfreefp)
bool BLI_gset_remove(GSet *gs, const void *key, GSetKeyFreeFP keyfreefp)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
#define LISTBASE_FOREACH(type, var, list)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define UNUSED_VARS_NDEBUG(...)
#define CLOG_INFO(clg_ref, level,...)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
Read Guarded memory(de)allocation.
struct CLG_LogRef * WM_LOG_MSGBUS_SUB
SyclQueue void void size_t num_bytes void
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
struct GSet * messages_gset[WM_MSG_TYPE_NUM]
struct wmMsgSubscribeKey * next
wmMsgSubscribeValue params
struct wmMsgSubscribeValueLink * next
wmMsgSubscribeValueFreeDataFn free_data
void(* remove_by_id)(struct wmMsgBus *mbus, const struct ID *id)
void(* update_by_id)(struct wmMsgBus *mbus, struct ID *id_src, struct ID *id_dst)
void(* repr)(FILE *stream, const struct wmMsgSubscribeKey *msg_key)
struct wmMsgTypeInfo::@1202 gset
unsigned int(* hash_fn)(const void *msg)
void(* key_free_fn)(void *key)
bool(* cmp_fn)(const void *a, const void *b)
void WM_msg_id_update(struct wmMsgBus *mbus, struct ID *id_src, struct ID *id_dst)
void WM_msgbus_clear_by_owner(struct wmMsgBus *mbus, void *owner)
static wmMsgTypeInitFn wm_msg_init_fn[WM_MSG_TYPE_NUM]
void WM_msgbus_destroy(struct wmMsgBus *mbus)
static wmMsgTypeInfo wm_msg_types[WM_MSG_TYPE_NUM]
void WM_msg_dump(struct wmMsgBus *mbus, const char *info_str)
void WM_msgbus_types_init(void)
void WM_msg_publish_with_key(struct wmMsgBus *mbus, wmMsgSubscribeKey *msg_key)
void WM_msg_id_remove(struct wmMsgBus *mbus, const struct ID *id)
wmMsgSubscribeKey * WM_msg_subscribe_with_key(struct wmMsgBus *mbus, const wmMsgSubscribeKey *msg_key_test, const wmMsgSubscribeValue *msg_val_params)
void WM_msgbus_handle(struct wmMsgBus *mbus, struct bContext *C)
void wm_msg_subscribe_value_free(wmMsgSubscribeKey *msg_key, wmMsgSubscribeValueLink *msg_lnk)
void(* wmMsgTypeInitFn)(wmMsgTypeInfo *)
struct wmMsgBus * WM_msgbus_create(void)
BLI_INLINE const wmMsg * wm_msg_subscribe_value_msg_cast(const wmMsgSubscribeKey *key)
void WM_msgtypeinfo_init_rna(wmMsgTypeInfo *msgtype_info)
void WM_msgtypeinfo_init_static(wmMsgTypeInfo *msgtype_info)