Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Montagne <montagne29@wanadoo.fr>2016-03-01 20:09:22 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2016-03-01 20:09:22 +0300
commit42b2c47386ef3c9f4db5654a9920bf2fbbe4e632 (patch)
tree2a6f269eb2ba2cfd8e9faad9c31f6ecd5333f6e1
parent449fbde7d12731019089e8bf008667f44e859e09 (diff)
Fix T47643: Blender crash. Linked speaker issue.
Speaker's localization func would not make direct-linked its used sound datablock...
-rw-r--r--source/blender/blenkernel/intern/speaker.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/speaker.c b/source/blender/blenkernel/intern/speaker.c
index 3b5b8ce3f9a..c452065fbad 100644
--- a/source/blender/blenkernel/intern/speaker.c
+++ b/source/blender/blenkernel/intern/speaker.c
@@ -81,6 +81,11 @@ Speaker *BKE_speaker_copy(Speaker *spk)
return spkn;
}
+static void extern_local_speaker(Speaker *spk)
+{
+ id_lib_extern((ID *)spk->sound);
+}
+
void BKE_speaker_make_local(Speaker *spk)
{
Main *bmain = G.main;
@@ -95,6 +100,7 @@ void BKE_speaker_make_local(Speaker *spk)
if (spk->id.lib == NULL) return;
if (spk->id.us == 1) {
id_clear_lib_data(bmain, &spk->id);
+ extern_local_speaker(spk);
return;
}
@@ -109,6 +115,7 @@ void BKE_speaker_make_local(Speaker *spk)
if (is_local && is_lib == false) {
id_clear_lib_data(bmain, &spk->id);
+ extern_local_speaker(spk);
}
else if (is_local && is_lib) {
Speaker *spk_new = BKE_speaker_copy(spk);