49 const uint gset_reserve = 512;
71 msg_key = msg_key_next)
73 msg_key_next = msg_key->
next;
79 msg_lnk = msg_lnk_next)
81 msg_lnk_next = msg_lnk->
next;
82 if (msg_lnk->params.owner == owner) {
83 if (msg_lnk->params.tag) {
86 if (msg_lnk->params.free_data) {
87 msg_lnk->params.free_data(msg_key, &msg_lnk->params);
107 printf(
">>>> %s\n", info_str);
111 info->
repr(stdout, key);
113 printf(
"<<<< %s\n", info_str);
130 if (msg_lnk->params.tag) {
131 msg_lnk->params.notify(
C, key, &msg_lnk->params);
132 msg_lnk->params.tag =
false;
163 if ((msg_lnk->params.notify == msg_val_params->
notify) &&
164 (msg_lnk->params.owner == msg_val_params->
owner) &&
165 (msg_lnk->params.user_data == msg_val_params->
user_data))
173 msg_lnk->
params = *msg_val_params;
181 "tagging subscribers: (ptr=%p, len=%d)",
187 msg_lnk->params.notify(
nullptr, msg_key, &msg_lnk->params);
190 if (msg_lnk->params.tag ==
false) {
191 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)
#define LISTBASE_FOREACH(type, var, list)
BLI_INLINE bool BLI_listbase_is_empty(const ListBase *lb)
void BLI_addtail(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
int BLI_listbase_count(const ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define UNUSED_VARS_NDEBUG(...)
#define CLOG_DEBUG(clg_ref,...)
Read Guarded memory(de)allocation.
CLG_LogRef * WM_LOG_MSGBUS_SUB
void * MEM_mallocN(size_t len, const char *str)
void * MEM_callocN(size_t len, const char *str)
void MEM_freeN(void *vmemh)
GSet * messages_gset[WM_MSG_TYPE_NUM]
wmMsgSubscribeValueLink * next
wmMsgSubscribeValue params
wmMsgSubscribeValueFreeDataFn free_data
void(* remove_by_id)(wmMsgBus *mbus, const ID *id)
void(* update_by_id)(wmMsgBus *mbus, ID *id_src, ID *id_dst)
struct wmMsgTypeInfo::@062176151244273150215163026361115361006314120344 gset
void *(* key_duplicate_fn)(const void *key)
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_remote_io(wmMsgTypeInfo *msgtype_info)
void WM_msgtypeinfo_init_rna(wmMsgTypeInfo *msgtype_info)
void WM_msgtypeinfo_init_static(wmMsgTypeInfo *msgtype_info)