TDME2  1.9.200
AudioBufferManager.cpp
Go to the documentation of this file.
2 
3 #include <string>
4 #include <unordered_map>
5 
6 #include <tdme/tdme.h>
7 #include <tdme/audio/Audio.h>
10 
11 using std::string;
12 using std::unordered_map;
13 
14 using tdme::audio::Audio;
18 
19 AudioBufferManager_AudioBufferManaged* AudioBufferManager::addAudioBuffer(const string& id)
20 {
21  // check if we already manage this audio buffer
22  auto audioBufferManagedIt = audioBuffers.find(id);
23  AudioBufferManager_AudioBufferManaged* audioBufferManaged = audioBufferManagedIt != audioBuffers.end()?audioBufferManagedIt->second:nullptr;
24  if (audioBufferManaged != nullptr) {
25  audioBufferManaged->incrementReferenceCounter();
26  // yep, return buffer
27  return audioBufferManaged;
28  }
29  // not yet, create managed audio buffer with no AL id attached yet
30  audioBufferManaged = new AudioBufferManager_AudioBufferManaged(this, id, Audio::ALBUFFERID_NONE);
31  audioBufferManaged->incrementReferenceCounter();
32  // add it to our audioBuffers
33  audioBuffers[audioBufferManaged->getId()] = audioBufferManaged;
34  // return audio buffer
35  return audioBufferManaged;
36 }
37 
39 {
40  auto audioBufferManagedIt = audioBuffers.find(id);
41  AudioBufferManager_AudioBufferManaged* audioBufferManaged = audioBufferManagedIt != audioBuffers.end()?audioBufferManagedIt->second:nullptr;
42  if (audioBufferManaged != nullptr) {
43  if (audioBufferManaged->decrementReferenceCounter()) {
44  // remove from our list
45  audioBuffers.erase(audioBufferManagedIt);
46  delete audioBufferManaged;
47  // report to called that this audio buffer can be removed
48  return true;
49  } else {
50  return false;
51  }
52  }
53  // should never happen
54  Console::println(string("Warning: audio buffer not loaded by audio buffer manager"));
55  return false;
56 }
bool removeAudioBuffer(const string &id)
Removes a texture from manager / open gl stack.
unordered_map< string, AudioBufferManager_AudioBufferManaged * > audioBuffers
friend class AudioBufferManager_AudioBufferManaged
Interface to audio module.
Definition: Audio.h:29
static constexpr uint32_t ALBUFFERID_NONE
Definition: Audio.h:35
Console class.
Definition: Console.h:29