[Bf-blender-cvs] [42b2c47] master: Fix T47643: Blender crash. Linked speaker issue.

Bastien Montagne noreply at git.blender.org
Tue Mar 1 18:10:15 CET 2016


Commit: 42b2c47386ef3c9f4db5654a9920bf2fbbe4e632
Author: Bastien Montagne
Date:   Tue Mar 1 18:09:22 2016 +0100
Branches: master
https://developer.blender.org/rB42b2c47386ef3c9f4db5654a9920bf2fbbe4e632

Fix T47643: Blender crash. Linked speaker issue.

Speaker's localization func would not make direct-linked its used sound datablock...

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

M	source/blender/blenkernel/intern/speaker.c

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

diff --git a/source/blender/blenkernel/intern/speaker.c b/source/blender/blenkernel/intern/speaker.c
index 3b5b8ce..c452065 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);




More information about the Bf-blender-cvs mailing list