summaryrefslogtreecommitdiff
path: root/drivers/chibi/cp_loader_mod.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/chibi/cp_loader_mod.cpp')
-rw-r--r--drivers/chibi/cp_loader_mod.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/drivers/chibi/cp_loader_mod.cpp b/drivers/chibi/cp_loader_mod.cpp
index 98174ff9b1..f867b77914 100644
--- a/drivers/chibi/cp_loader_mod.cpp
+++ b/drivers/chibi/cp_loader_mod.cpp
@@ -5,7 +5,7 @@
/* GODOT ENGINE */
/* http://www.godotengine.org */
/*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */
/* */
/* Permission is hereby granted, free of charge, to any person obtaining */
/* a copy of this software and associated documentation files (the */
@@ -446,18 +446,19 @@ CPLoader::Error CPLoader_MOD::load_song(const char *p_file,CPSong *p_song,bool p
if (sid.is_null()) {
continue; //empty sample, not stored?
}
-
+ sm->lock_data(sid);
+ uint8_t *dataptr = (uint8_t*)sm->get_data(sid);
+
int len=sm->get_size(sid);
for (int s=0;s<len;s++) {
uint8_t d=file->get_byte();
//d-=128; //convert to signed
int8_t*ds=(int8_t*)&d;
- int16_t d16=*ds;
- d16<<=8;
- sm->set_data( sid, s, d16 );
+ dataptr[s]=*ds;
}
+ sm->unlock_data(sid);
}
file->close();