2.5 Sound: RNA for bSound.
authorJoerg Mueller <nexyon@gmail.com>
Wed, 26 Aug 2009 18:20:17 +0000 (18:20 +0000)
committerJoerg Mueller <nexyon@gmail.com>
Wed, 26 Aug 2009 18:20:17 +0000 (18:20 +0000)
source/blender/blenkernel/BKE_sound.h
source/blender/blenkernel/intern/sound.c
source/blender/makesrna/intern/rna_sound.c

index 84ecd79a008f3ac4ee5765f945e023d41d1ed11e..e9f6eb21e36c546b84da495c315bf87b30d353b8 100644 (file)
@@ -54,6 +54,8 @@ void sound_delete(struct bContext *C, struct bSound* sound);
 
 void sound_cache(struct bSound* sound, int ignore);
 
+void sound_delete_cache(struct bSound* sound);
+
 void sound_load(struct Main *main, struct bSound* sound);
 
 void sound_free(struct bSound* sound);
index 070b5786a741ace4f83c09b8cc8c1d2d64575174..3794fbe90efb5658502ef04bb42ff74875e17534 100644 (file)
@@ -163,6 +163,16 @@ void sound_cache(struct bSound* sound, int ignore)
                AUD_unload(sound->cache);
 
        sound->cache = AUD_bufferSound(sound->handle);
+       sound->changed = TRUE;
+}
+
+void sound_delete_cache(struct bSound* sound)
+{
+       if(sound->cache)
+       {
+               AUD_unload(sound->cache);
+               sound->cache = NULL;
+       }
 }
 
 void sound_load(struct Main *main, struct bSound* sound)
@@ -219,6 +229,7 @@ void sound_load(struct Main *main, struct bSound* sound)
                        break;
                }
 #endif
+               sound->changed = TRUE;
        }
 }
 
index a029ef8554413e80fa8de661a18edb0054df8a5a..38e4d850c685e48772ea5ce57b30a782bf97b244 100644 (file)
 
 #ifdef RNA_RUNTIME
 
+#include "BKE_sound.h"
+#include "BKE_context.h"
+
+static void rna_Sound_filename_update(bContext *C, PointerRNA *ptr)
+{
+       sound_load(CTX_data_main(C), (bSound*)ptr->data);
+}
+
+static int rna_Sound_caching_get(PointerRNA *ptr)
+{
+       bSound *sound = (bSound*)(ptr->data);
+       return sound->cache != NULL;
+}
+
+static void rna_Sound_caching_set(PointerRNA *ptr, const int value)
+{
+       bSound *sound = (bSound*)(ptr->data);
+       if(value)
+               sound_cache(sound, 0);
+       else
+               sound_delete_cache(sound);
+}
+
 #else
 
 static void rna_def_sound(BlenderRNA *brna)
@@ -51,10 +74,16 @@ static void rna_def_sound(BlenderRNA *brna)
        prop= RNA_def_property(srna, "filename", PROP_STRING, PROP_FILEPATH);
        RNA_def_property_string_sdna(prop, NULL, "name");
        RNA_def_property_ui_text(prop, "Filename", "Sound sample file used by this Sound datablock.");
+       RNA_def_property_update(prop, 0, "rna_Sound_filename_update");
 
        prop= RNA_def_property(srna, "packed_file", PROP_POINTER, PROP_NONE);
        RNA_def_property_pointer_sdna(prop, NULL, "packedfile");
        RNA_def_property_ui_text(prop, "Packed File", "");
+
+       prop= RNA_def_property(srna, "caching", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_funcs(prop, "rna_Sound_caching_get", "rna_Sound_caching_set");
+       RNA_def_property_ui_text(prop, "Caching", "The sound file is decoded and loaded into RAM.");
+       RNA_def_property_update(prop, 0, "rna_Sound_filename_update");
 }
 
 void RNA_def_sound(BlenderRNA *brna)