[Bf-blender-cvs] [6728cc6fdb3] id-ensure-unique-memory-address: Merge branch 'readfile-rework-refcount-handling' into id-ensure-unique-memory-address

Bastien Montagne noreply at git.blender.org
Fri Feb 14 14:25:08 CET 2020


Commit: 6728cc6fdb3b785b3068721786f3efe765aca8fb
Author: Bastien Montagne
Date:   Fri Feb 14 14:20:00 2020 +0100
Branches: id-ensure-unique-memory-address
https://developer.blender.org/rB6728cc6fdb3b785b3068721786f3efe765aca8fb

Merge branch 'readfile-rework-refcount-handling' into id-ensure-unique-memory-address

Conflicts:
	source/blender/blenkernel/intern/main.c

===================================================================



===================================================================

diff --cc source/blender/blenkernel/intern/main.c
index 74ce219862c,659c3944edb..30dff086f6c
--- a/source/blender/blenkernel/intern/main.c
+++ b/source/blender/blenkernel/intern/main.c
@@@ -211,60 -209,12 +211,60 @@@ void BKE_main_unlock(struct Main *bmain
    BLI_spin_unlock((SpinLock *)bmain->lock);
  }
  
 +void BKE_main_idmemset_ensure(Main *bmain)
 +{
 +  if (bmain->used_id_memset == NULL || (bmain->used_id_memset_tag & MAIN_IDMEMSET_OWNER) == 0) {
 +    bmain->used_id_memset = BLI_gset_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, __func__);
 +    bmain->used_id_memset_tag |= MAIN_IDMEMSET_OWNER;
 +  }
 +}
 +
 +void BKE_main_idmemset_release(Main *bmain)
 +{
 +  if (bmain->used_id_memset != NULL) {
 +    if ((bmain->used_id_memset_tag & MAIN_IDMEMSET_OWNER) != 0) {
 +      BLI_gset_free(bmain->used_id_memset, NULL);
 +    }
 +    bmain->used_id_memset = NULL;
 +    bmain->used_id_memset_tag &= ~MAIN_IDMEMSET_OWNER;
 +  }
 +}
 +
 +void BKE_main_idmemset_transfer_ownership(Main *bmain_dst, Main *bmain_src)
 +{
 +  BKE_main_idmemset_release(bmain_dst);
 +
 +  BLI_assert(bmain_src->used_id_memset != NULL);
 +  BLI_assert(bmain_src->used_id_memset_tag & MAIN_IDMEMSET_OWNER);
 +
 +  bmain_dst->used_id_memset = bmain_src->used_id_memset;
 +  bmain_dst->used_id_memset_tag |= MAIN_IDMEMSET_OWNER;
 +  bmain_src->used_id_memset_tag &= ~MAIN_IDMEMSET_OWNER;
 +}
 +
 +void BKE_main_idmemset_usefrom(Main *bmain_user, Main *bmain_src)
 +{
 +  BKE_main_idmemset_release(bmain_user);
 +
 +  BLI_assert(bmain_src->used_id_memset != NULL);
 +  bmain_user->used_id_memset = bmain_src->used_id_memset;
 +}
 +
 +/**
 + * @return true if the ID was successfully added to the memset, false if it already existed.
 + */
 +bool BKE_main_idmemset_register_id(Main *bmain, ID *id)
 +{
 +  BLI_assert(bmain->used_id_memset != NULL);
 +  return BLI_gset_add(bmain->used_id_memset, id);
 +}
 +
- static int main_relations_create_idlink_cb(void *user_data,
-                                            ID *id_self,
-                                            ID **id_pointer,
-                                            int cb_flag)
+ static int main_relations_create_idlink_cb(LibraryIDLinkCallbackData *cb_data)
  {
-   MainIDRelations *rel = user_data;
+   MainIDRelations *rel = cb_data->user_data;
+   ID *id_self = cb_data->id_self;
+   ID **id_pointer = cb_data->id_pointer;
+   const int cb_flag = cb_data->cb_flag;
  
    if (*id_pointer) {
      MainIDRelationsEntry *entry, **entry_p;



More information about the Bf-blender-cvs mailing list