[Bf-blender-cvs] [9139385] free-refcount-ids: Merge branch 'master' into free-refcount-ids
Bastien Montagne
noreply at git.blender.org
Tue Oct 6 12:20:43 CEST 2015
Commit: 913938514d682990ea9b0aebf90574bfe96f43a8
Author: Bastien Montagne
Date: Tue Oct 6 12:19:29 2015 +0200
Branches: free-refcount-ids
https://developer.blender.org/rB913938514d682990ea9b0aebf90574bfe96f43a8
Merge branch 'master' into free-refcount-ids
===================================================================
===================================================================
diff --cc source/blender/blenkernel/BKE_font.h
index 18bc22b,f20c166..0c96107
--- a/source/blender/blenkernel/BKE_font.h
+++ b/source/blender/blenkernel/BKE_font.h
@@@ -78,9 -78,11 +78,11 @@@ bool BKE_vfont_is_builtin(struct VFont
void BKE_vfont_builtin_register(void *mem, int size);
void BKE_vfont_free_data(struct VFont *vfont);
-void BKE_vfont_free(struct VFont *sc);
+void BKE_vfont_free(struct VFont *sc, const bool do_id_user);
struct VFont *BKE_vfont_builtin_get(void);
- struct VFont *BKE_vfont_load(struct Main *bmain, const char *name);
+ struct VFont *BKE_vfont_load(struct Main *bmain, const char *filepath);
+ struct VFont *BKE_vfont_load_exists_ex(struct Main *bmain, const char *filepath, bool *r_exists);
+ struct VFont *BKE_vfont_load_exists(struct Main *bmain, const char *filepath);
bool BKE_vfont_to_curve_ex(struct Main *bmain, struct Object *ob, int mode,
struct ListBase *r_nubase,
diff --cc source/blender/blenkernel/intern/sound.c
index 180c82f,7e7cc87..53d6d8b
--- a/source/blender/blenkernel/intern/sound.c
+++ b/source/blender/blenkernel/intern/sound.c
@@@ -99,17 -92,39 +92,48 @@@ bSound *BKE_sound_new_file(struct Main
return sound;
}
+ bSound *BKE_sound_new_file_exists_ex(struct Main *bmain, const char *filepath, bool *r_exists)
+ {
+ bSound *sound;
+ char str[FILE_MAX], strtest[FILE_MAX];
+
+ BLI_strncpy(str, filepath, sizeof(str));
+ BLI_path_abs(str, bmain->name);
+
+ /* first search an identical filepath */
+ for (sound = bmain->sound.first; sound; sound = sound->id.next) {
+ BLI_strncpy(strtest, sound->name, sizeof(sound->name));
+ BLI_path_abs(strtest, ID_BLEND_PATH(bmain, &sound->id));
+
+ if (BLI_path_cmp(strtest, str) == 0) {
+ sound->id.us++; /* officially should not, it doesn't link here! */
+ if (r_exists)
+ *r_exists = true;
+ return sound;
+ }
+ }
+
+ if (r_exists)
+ *r_exists = false;
+ return BKE_sound_new_file(bmain, filepath);
+ }
+
+ bSound *BKE_sound_new_file_exists(struct Main *bmain, const char *filepath)
+ {
+ return BKE_sound_new_file_exists_ex(bmain, filepath, NULL);
+ }
+
-void BKE_sound_free(bSound *sound)
+/**
+ * Free (or release) any data used by this sound (does not free the sound itself).
+ *
+ * \param sound The sound to free.
+ * \param do_id_user When \a true, ID datablocks used (referenced) by this sound are 'released'
+ * (their user count is decreased).
+ */
+void BKE_sound_free(bSound *sound, const bool UNUSED(do_id_user))
{
+ /* No animdata here. */
+
if (sound->packedfile) {
freePackedFile(sound->packedfile);
sound->packedfile = NULL;
More information about the Bf-blender-cvs
mailing list