[Bf-blender-cvs] [55c792d] asset-experiments: Add 'dup_poin' callback param to new `BLI_duplicate_filelist()` func, to allow handling direntry's poin if needed.
Bastien Montagne
noreply at git.blender.org
Fri Jan 2 17:39:35 CET 2015
Commit: 55c792df8e69e57f47803010bf21b185527f374a
Author: Bastien Montagne
Date: Fri Jan 2 17:38:25 2015 +0100
Branches: asset-experiments
https://developer.blender.org/rB55c792df8e69e57f47803010bf21b185527f374a
Add 'dup_poin' callback param to new `BLI_duplicate_filelist()` func, to allow handling direntry's poin if needed.
===================================================================
M source/blender/blenlib/BLI_fileops.h
M source/blender/blenlib/intern/storage.c
M source/blender/editors/space_file/filelist.c
===================================================================
diff --git a/source/blender/blenlib/BLI_fileops.h b/source/blender/blenlib/BLI_fileops.h
index 260827f..9335bba 100644
--- a/source/blender/blenlib/BLI_fileops.h
+++ b/source/blender/blenlib/BLI_fileops.h
@@ -89,7 +89,9 @@ double BLI_dir_free_space(const char *dir);
char *BLI_current_working_dir(char *dir, const size_t maxlen);
unsigned int BLI_dir_contents(const char *dir, struct direntry **filelist);
-void BLI_duplicate_filelist(struct direntry **dest_filelist, struct direntry *src_filelist, unsigned int nrentries);
+void BLI_duplicate_filelist(
+ struct direntry **dest_filelist, struct direntry *src_filelist, unsigned int nrentries,
+ void *(*dup_poin)(void *));
void BLI_free_filelist(struct direntry *filelist, unsigned int nrentries);
/* Files */
diff --git a/source/blender/blenlib/intern/storage.c b/source/blender/blenlib/intern/storage.c
index 3ed3b07..13fedbc 100644
--- a/source/blender/blenlib/intern/storage.c
+++ b/source/blender/blenlib/intern/storage.c
@@ -411,8 +411,12 @@ unsigned int BLI_dir_contents(const char *dirname, struct direntry **filelist)
/**
* Deep-duplicate of an array of direntries, including the array itself.
+ *
+ * \param dup_poin If given, called for each non-NULL direntry->poin. Otherwise, pointer is always simply copied over.
*/
-void BLI_duplicate_filelist(struct direntry **dest_filelist, struct direntry *src_filelist, unsigned int nrentries)
+void BLI_duplicate_filelist(
+ struct direntry **dest_filelist, struct direntry *src_filelist, unsigned int nrentries,
+ void *(*dup_poin)(void *))
{
unsigned int i;
@@ -430,7 +434,9 @@ void BLI_duplicate_filelist(struct direntry **dest_filelist, struct direntry *sr
if (dest->path) {
dest->path = MEM_dupallocN(src->path);
}
- /* entry->poin assumed not needing any handling here. */
+ if (dest->poin && dup_poin) {
+ dest->poin = dup_poin(src->poin);
+ }
}
}
diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c
index 636f84e..65f8a69 100644
--- a/source/blender/editors/space_file/filelist.c
+++ b/source/blender/editors/space_file/filelist.c
@@ -1907,8 +1907,8 @@ static void filelist_readjob_update(void *flrjv)
if (flrj->tmp_filelist->numfiles != flrj->filelist->numfiles) {
num_new_entries = flrj->tmp_filelist->numfiles;
/* This way we are sure we won't share any mem with background job! */
- /* Note direntry->poin is not handled here, should not matter though. */
- BLI_duplicate_filelist(&new_entries, flrj->tmp_filelist->filelist, num_new_entries);
+ /* Note direntry->poin is not handled here, should not matter though currently. */
+ BLI_duplicate_filelist(&new_entries, flrj->tmp_filelist->filelist, num_new_entries, NULL);
}
BLI_mutex_unlock(&flrj->lock);
More information about the Bf-blender-cvs
mailing list