[Bf-blender-cvs] [afcc442cfa9] uuid-undo-experiments: Revert "Initial rough idea of 'unique ID address' change."
Bastien Montagne
noreply at git.blender.org
Fri Feb 28 15:46:02 CET 2020
Commit: afcc442cfa9720c5da540e7c7b9bdddda1504f82
Author: Bastien Montagne
Date: Fri Feb 28 15:26:15 2020 +0100
Branches: uuid-undo-experiments
https://developer.blender.org/rBafcc442cfa9720c5da540e7c7b9bdddda1504f82
Revert "Initial rough idea of 'unique ID address' change."
This reverts commit 587155745b3b6c4949dd0b155abf24405b436c24.
===================================================================
M source/blender/blenkernel/BKE_lib_id.h
M source/blender/blenkernel/BKE_main.h
M source/blender/blenkernel/intern/blender.c
M source/blender/blenkernel/intern/lib_id.c
M source/blender/blenkernel/intern/main.c
M source/blender/blenloader/intern/readfile.c
M source/blender/depsgraph/intern/node/deg_node_id.cc
===================================================================
diff --git a/source/blender/blenkernel/BKE_lib_id.h b/source/blender/blenkernel/BKE_lib_id.h
index 4d10925e3fa..d9d99d607c5 100644
--- a/source/blender/blenkernel/BKE_lib_id.h
+++ b/source/blender/blenkernel/BKE_lib_id.h
@@ -62,7 +62,7 @@ struct PropertyRNA;
struct bContext;
size_t BKE_libblock_get_alloc_info(short type, const char **name);
-void *BKE_libblock_alloc_notest(struct Main *bmain, short type) ATTR_WARN_UNUSED_RESULT;
+void *BKE_libblock_alloc_notest(short type) ATTR_WARN_UNUSED_RESULT;
void *BKE_libblock_alloc(struct Main *bmain, short type, const char *name, const int flag)
ATTR_WARN_UNUSED_RESULT;
void BKE_libblock_init_empty(struct ID *id) ATTR_NONNULL(1);
diff --git a/source/blender/blenkernel/BKE_main.h b/source/blender/blenkernel/BKE_main.h
index b6d21643b68..8aac09d8738 100644
--- a/source/blender/blenkernel/BKE_main.h
+++ b/source/blender/blenkernel/BKE_main.h
@@ -105,9 +105,6 @@ typedef struct Main {
*/
char use_memfile_full_barrier;
- struct GSet *used_id_memset;
- short used_id_memset_tag;
-
BlendThumbnail *blen_thumb;
struct Library *curlib;
@@ -158,34 +155,12 @@ typedef struct Main {
struct MainLock *lock;
} Main;
-/* Main.used_id_memory_pointers_tag */
-enum {
- MAIN_IDMEMSET_OWNER = 1 << 0,
-};
-
struct Main *BKE_main_new(void);
void BKE_main_free(struct Main *mainvar);
void BKE_main_lock(struct Main *bmain);
void BKE_main_unlock(struct Main *bmain);
-void BKE_main_idmemset_ensure(struct Main *bmain);
-void BKE_main_idmemset_release(struct Main *bmain);
-void BKE_main_idmemset_transfer_ownership(struct Main *bmain_dst, struct Main *bmain_src);
-void BKE_main_idmemset_usefrom(struct Main *bmain_user, struct Main *bmain_src);
-bool BKE_main_idmemset_register_id(struct Main *bmain, struct ID *id);
-void *BKE_main_idmemset_unique_alloc(struct Main *bmain,
- void *(*alloc_cb)(size_t len, const char *str),
- size_t size,
- const char *message);
-void *BKE_main_idmemset_unique_realloc(struct Main *bmain,
- void *vmemh,
- void *(*realloc_cb)(void *vmemh,
- size_t len,
- const char *str),
- size_t size,
- const char *message);
-
void BKE_main_relations_create(struct Main *bmain, const short flag);
void BKE_main_relations_free(struct Main *bmain);
diff --git a/source/blender/blenkernel/intern/blender.c b/source/blender/blenkernel/intern/blender.c
index 7a145f41c32..ac432bf0b64 100644
--- a/source/blender/blenkernel/intern/blender.c
+++ b/source/blender/blenkernel/intern/blender.c
@@ -127,7 +127,6 @@ void BKE_blender_globals_init(void)
U.savetime = 1;
G_MAIN = BKE_main_new();
- BKE_main_idmemset_ensure(G_MAIN);
strcpy(G.ima, "//");
diff --git a/source/blender/blenkernel/intern/lib_id.c b/source/blender/blenkernel/intern/lib_id.c
index 132f86755b6..157ab73b0d1 100644
--- a/source/blender/blenkernel/intern/lib_id.c
+++ b/source/blender/blenkernel/intern/lib_id.c
@@ -1193,12 +1193,12 @@ size_t BKE_libblock_get_alloc_info(short type, const char **name)
* Allocates and returns memory of the right size for the specified block type,
* initialized to zero.
*/
-void *BKE_libblock_alloc_notest(Main *bmain, short type)
+void *BKE_libblock_alloc_notest(short type)
{
const char *name;
size_t size = BKE_libblock_get_alloc_info(type, &name);
if (size != 0) {
- return BKE_main_idmemset_unique_alloc(bmain, MEM_callocN, size, name);
+ return MEM_callocN(size, name);
}
BLI_assert(!"Request to allocate unknown data type");
return NULL;
@@ -1214,7 +1214,7 @@ void *BKE_libblock_alloc(Main *bmain, short type, const char *name, const int fl
{
BLI_assert((flag & LIB_ID_CREATE_NO_ALLOCATE) == 0);
- ID *id = BKE_libblock_alloc_notest(bmain, type);
+ ID *id = BKE_libblock_alloc_notest(type);
if (id) {
if ((flag & LIB_ID_CREATE_NO_MAIN) != 0) {
diff --git a/source/blender/blenkernel/intern/main.c b/source/blender/blenkernel/intern/main.c
index bf7d7fc00ab..659c3944edb 100644
--- a/source/blender/blenkernel/intern/main.c
+++ b/source/blender/blenkernel/intern/main.c
@@ -194,8 +194,6 @@ void BKE_main_free(Main *mainvar)
BKE_main_relations_free(mainvar);
}
- BKE_main_idmemset_release(mainvar);
-
BLI_spin_end((SpinLock *)mainvar->lock);
MEM_freeN(mainvar->lock);
MEM_freeN(mainvar);
@@ -211,95 +209,6 @@ 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);
-}
-
-void *BKE_main_idmemset_unique_alloc(Main *bmain,
- void *(*alloc_cb)(size_t len, const char *str),
- size_t size,
- const char *message)
-{
- void *id_mem = alloc_cb(size, message);
- if (bmain != NULL && bmain->used_id_memset != NULL) {
- ListBase generated_ids = {.first = NULL};
- int count = 0;
- while (UNLIKELY(!BKE_main_idmemset_register_id(bmain, id_mem))) {
- printf("Allocating ID re-used memory address %p, trying again (%d)...\n", id_mem, ++count);
- BLI_addtail(&generated_ids, id_mem);
- id_mem = alloc_cb(size, message);
- }
- BLI_freelistN(&generated_ids);
- }
- return id_mem;
-}
-
-void *BKE_main_idmemset_unique_realloc(Main *bmain,
- void *vmemh,
- void *(*realloc_cb)(void *vmemh,
- size_t len,
- const char *str),
- size_t size,
- const char *message)
-{
- void *id_mem = realloc_cb(vmemh, size, message);
- if (bmain != NULL && bmain->used_id_memset != NULL) {
- ListBase generated_ids = {.first = NULL};
- int count = 0;
- while (UNLIKELY(!BKE_main_idmemset_register_id(bmain, id_mem))) {
- printf("Allocating ID re-used memory address %p, trying again (%d)...\n", id_mem, ++count);
- BLI_addtail(&generated_ids, id_mem);
- id_mem = realloc_cb(id_mem, size, message);
- }
- BLI_freelistN(&generated_ids);
- }
- return id_mem;
-}
-
static int main_relations_create_idlink_cb(LibraryIDLinkCallbackData *cb_data)
{
MainIDRelations *rel = cb_data->user_data;
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 98af88ac728..da21b381563 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -505,8 +505,6 @@ static void add_main_to_main(Main *mainvar, Main *from)
ListBase *lbarray[MAX_LIBARRAY], *fromarray[MAX_LIBARRAY];
int a;
- BLI_assert(ELEM(from->used_id_memset, NULL, mainvar->used_id_memset));
-
set_listbasepointers(mainvar, lbarray);
a = set_listbasepointers(from, fromarray);
while (a--) {
@@ -564,7 +562,6 @@ void blo_split_main(ListBase *mainlist, Main *main)
int i = 0;
for (Library *lib = main->libraries.first; lib; lib = lib->id.next, i++) {
Main *libmain = BKE_main_new();
- BKE_main_idmemset_usefrom(libmain, main);
libmain->curlib = lib;
libmain->versionfile = lib->versionfile;
libmain->subversionfile = lib->subversionfile;
@@ -675,7 +672,6 @@ static Main *blo_find_main(FileData *fd, const char *filepath, const char *relab
}
m = BKE_main_new();
- BKE_main_idmemset_usefrom(m, mainlist->first);
BLI_addtail(mainlist, m);
/* Add library data-block itself to 'main' Main, since libraries are **never** linked data.
@@ -8267,7 +8263,6 @@ static void direct_link_library(FileData *fd, Library *lib, Main *main)
/* new main */
newmain = BKE_main_new();
- BKE_main_idmemset_usefrom(newmain, fd->mainlist->first);
BLI_addtail(fd->mainlist, newmain);
newmain->curlib = lib;
@@ -8852,7 +8847,7 @@ static void direct_link_linestyle(FileData *fd, FreestyleLineStyle *linestyle)
static ID *create_placeholder(Main *mainvar, const short idcode, const char *idname, const int tag)
{
ListBase *lb = which_libbase(mainvar, idcode);
- ID *ph_id = BKE_libblock_alloc_notest(mainvar, idcode);
+ ID *ph_id = BKE_libblock_alloc_notest(idcode);
*((short *)ph_id->name) = idcode;
BLI_strncpy(ph_id->name + 2, idname, sizeof(ph_id->name) - 2);
@@ -9198,10 +9193,6 @@ static BHead *read_libblock(FileData *fd,
id->newid = NULL; /* Needed because .blend may h
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list