48 const uint gset_reserve = 512;
70 msg_key = msg_key_next)
72 msg_key_next = msg_key->
next;
78 msg_lnk = msg_lnk_next)
80 msg_lnk_next = msg_lnk->
next;
81 if (msg_lnk->params.owner == owner) {
82 if (msg_lnk->params.tag) {
85 if (msg_lnk->params.free_data) {
86 msg_lnk->params.free_data(msg_key, &msg_lnk->params);
106 printf(
">>>> %s\n", info_str);
110 info->
repr(stdout, key);
112 printf(
"<<<< %s\n", info_str);
129 if (msg_lnk->params.tag) {
130 msg_lnk->params.notify(C, key, &msg_lnk->params);
131 msg_lnk->params.tag =
false;
162 if ((msg_lnk->params.notify == msg_val_params->
notify) &&
163 (msg_lnk->params.owner == msg_val_params->
owner) &&
164 (msg_lnk->params.user_data == msg_val_params->
user_data))
173 msg_lnk->
params = *msg_val_params;
182 "tagging subscribers: (ptr=%p, len=%d)",
188 msg_lnk->params.notify(
nullptr, msg_key, &msg_lnk->params);
191 if (msg_lnk->params.tag ==
false) {
192 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,...)
Read Guarded memory(de)allocation.
CLG_LogRef * WM_LOG_MSGBUS_SUB
void *(* MEM_mallocN)(size_t len, const char *str)
void MEM_freeN(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
GSet * messages_gset[WM_MSG_TYPE_NUM]
wmMsgSubscribeValueLink * next
wmMsgSubscribeValue params
wmMsgSubscribeValueFreeDataFn free_data
struct wmMsgTypeInfo::@1392 gset
void(* remove_by_id)(wmMsgBus *mbus, const ID *id)
void(* update_by_id)(wmMsgBus *mbus, ID *id_src, ID *id_dst)
void(* repr)(FILE *stream, const wmMsgSubscribeKey *msg_key)
unsigned int(* hash_fn)(const void *msg)
void(* key_free_fn)(void *key)
bool(* cmp_fn)(const void *a, const void *b)
void WM_msgbus_destroy(wmMsgBus *mbus)
void(*)(wmMsgTypeInfo *) wmMsgTypeInitFn
static wmMsgTypeInitFn wm_msg_init_fn[WM_MSG_TYPE_NUM]
static wmMsgTypeInfo wm_msg_types[WM_MSG_TYPE_NUM]
void WM_msg_publish_with_key(wmMsgBus *mbus, wmMsgSubscribeKey *msg_key)
void WM_msg_id_update(wmMsgBus *mbus, ID *id_src, ID *id_dst)
void WM_msgbus_handle(wmMsgBus *mbus, bContext *C)
void WM_msg_id_remove(wmMsgBus *mbus, const ID *id)
void wm_msg_subscribe_value_free(wmMsgSubscribeKey *msg_key, wmMsgSubscribeValueLink *msg_lnk)
wmMsgBus * WM_msgbus_create()
void WM_msgbus_clear_by_owner(wmMsgBus *mbus, void *owner)
wmMsgSubscribeKey * WM_msg_subscribe_with_key(wmMsgBus *mbus, const wmMsgSubscribeKey *msg_key_test, const wmMsgSubscribeValue *msg_val_params)
void WM_msgbus_types_init()
void WM_msg_dump(wmMsgBus *mbus, const char *info_str)
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)