aboutsummaryrefslogtreecommitdiff
path: root/engines/gob/sound/sounddesc.cpp
diff options
context:
space:
mode:
authorNorbert Lange2009-07-01 14:45:24 +0000
committerNorbert Lange2009-07-01 14:45:24 +0000
commitabef70f4e14f495b20097cb46411d1fafbafdd53 (patch)
tree27462f82f352b303ac059dd275466930c88b2de6 /engines/gob/sound/sounddesc.cpp
parent3b94e2488df9a699a899727515ac69af6a0a1a6e (diff)
parentf9298ff40310149779b37ccdecc873afba7adf2f (diff)
downloadscummvm-rg350-abef70f4e14f495b20097cb46411d1fafbafdd53.tar.gz
scummvm-rg350-abef70f4e14f495b20097cb46411d1fafbafdd53.tar.bz2
scummvm-rg350-abef70f4e14f495b20097cb46411d1fafbafdd53.zip
Merging in changes from trunk
svn-id: r41989
Diffstat (limited to 'engines/gob/sound/sounddesc.cpp')
-rw-r--r--engines/gob/sound/sounddesc.cpp50
1 files changed, 39 insertions, 11 deletions
diff --git a/engines/gob/sound/sounddesc.cpp b/engines/gob/sound/sounddesc.cpp
index c4c78eebbd..b9b327d105 100644
--- a/engines/gob/sound/sounddesc.cpp
+++ b/engines/gob/sound/sounddesc.cpp
@@ -29,15 +29,17 @@
#include "sound/wave.h"
#include "gob/sound/sounddesc.h"
+#include "gob/resources.h"
namespace Gob {
SoundDesc::SoundDesc() {
+ _resource = 0;
+
_data = _dataPtr = 0;
_size = 0;
_type = SOUND_SND;
- _source = SOUND_FILE;
_repCount = 0;
_frequency = 0;
@@ -50,23 +52,31 @@ SoundDesc::~SoundDesc() {
free();
}
-void SoundDesc::set(SoundType type, SoundSource src,
- byte *data, uint32 dSize) {
-
+void SoundDesc::set(SoundType type, byte *data, uint32 dSize) {
free();
_type = type;
- _source = src;
_data = _dataPtr = data;
_size = dSize;
}
-bool SoundDesc::load(SoundType type, SoundSource src,
- byte *data, uint32 dSize) {
+void SoundDesc::set(SoundType type, Resource *resource) {
+ byte *data = 0;
+ uint32 dSize = 0;
+
+ if (resource && (resource->getSize() > 0)) {
+ data = resource->getData();
+ dSize = resource->getSize();
+ }
+
+ set(type, data, dSize);
+ _resource = resource;
+}
+
+bool SoundDesc::load(SoundType type, byte *data, uint32 dSize) {
free();
- _source = src;
switch (type) {
case SOUND_ADL:
return loadADL(data, dSize);
@@ -79,10 +89,28 @@ bool SoundDesc::load(SoundType type, SoundSource src,
return false;
}
+bool SoundDesc::load(SoundType type, Resource *resource) {
+ if (!resource || (resource->getSize() <= 0))
+ return false;
+
+ if (!load(type, resource->getData(), resource->getSize()))
+ return false;
+
+ _resource = resource;
+ return true;
+}
+
void SoundDesc::free() {
- if (_source != SOUND_TOT)
- delete[] _data;
- _data = _dataPtr = 0;
+ if (_resource) {
+ delete _resource;
+ _data = 0;
+ }
+
+ delete[] _data;
+
+ _resource = 0;
+ _data = 0;
+ _dataPtr = 0;
_id = 0;
}