From bd722d037440059ba781bb9dfe54eb44112c8665 Mon Sep 17 00:00:00 2001
From: jpbl <jpbl>
Date: Thu, 12 Jan 2006 22:28:04 +0000
Subject: [PATCH] added example03.cpp

---
 src/audio/OpenAL/example03.cpp | 77 ++++++++++++++++++----------------
 1 file changed, 42 insertions(+), 35 deletions(-)

diff --git a/src/audio/OpenAL/example03.cpp b/src/audio/OpenAL/example03.cpp
index 603f5501fe..7367b70c20 100644
--- a/src/audio/OpenAL/example03.cpp
+++ b/src/audio/OpenAL/example03.cpp
@@ -30,55 +30,62 @@
 
 using namespace SFLAudio;
 
-int main(int, char* []) 
+struct Info
 {
-  ALenum format1;
-  ALvoid *data1;
-  ALsizei size1;
-  ALsizei freq1;
-  ALboolean loop1;
-
-  ALenum format2;
-  ALvoid *data2;
-  ALsizei size2;
-  ALsizei freq2;
-  ALboolean loop2;
+  ALenum format;
+  ALvoid *data;
+  ALsizei size;
+  ALsizei freq;
+  ALboolean loop;
+};
 
+int main(int argc, char* argv[]) 
+{
   AudioLayer *layer = SFLAudio::AudioManager::instance().currentLayer();
   Device *device = layer->openDevice();
   Context *context = device->createContext();
 
-  // Load test.wav
-  alutLoadWAVFile("test.wav",&format1,&data1,&size1,&freq1,&loop1);
-  ALenum error = alGetError();
-  if (error != AL_NO_ERROR) {
-    std::cerr << "OpenAL: loadWAVFile : " << alGetString(error);
-    return 1;
-  }
+  ALbyte *files[] = {"test.wav", "test2.wav"};
 
-  // Load test2.wav
-  alutLoadWAVFile("test2.wav",&format2,&data2,&size2,&freq2,&loop2);
-  error = alGetError();
-  if (error != AL_NO_ERROR) {
-    std::cerr << "OpenAL: loadWAVFile : " << alGetString(error);
-    return 1;
+
+  Info *infos = new Info[argc-1];
+  ALenum error;
+
+  for(int i = 0; i < 2; i++) {
+    // Load test.wav
+    alutLoadWAVFile(files[i],
+		    &infos[i].format,
+		    &infos[i].data,
+		    &infos[i].size,
+		    &infos[i].freq,
+		    &infos[i].loop);
+    error = alGetError();
+    if (error != AL_NO_ERROR) {
+      std::cerr << "OpenAL: loadWAVFile : " << alGetString(error);
+      return 1;
+    }
+
+    i++;
   }
 
-  Source *source1 = context->createSource(format1, freq1);
-  source1->play(data1, size1);
-  Source *source2 = context->createSource(format2, freq2);
-  source2->play(data2, size2);
+  for(int i = 0; i < argc - 1; i++) {
+    Source *source = context->createSource(infos[i].format, infos[i].freq);
+    source->play(&infos[i].data, infos[i].size);
+  }
 
-  // Unload test.wav and test2.wav
-  alutUnloadWAV(format1, data1, size1, freq1);
-  alutUnloadWAV(format2, data2, size2, freq2);
+  for(int i = 0; i < argc - 1; i++) {
+    // Unload wav files
+    alutUnloadWAV(infos[i].format, 
+		  infos[i].data, 
+		  infos[i].size, 
+		  infos[i].freq);
+  }
+   
   std::cin.get();
+  
   error = alGetError();
-
   if (error != AL_NO_ERROR) {
     std::cerr << "OpenAL: unloadWAV : " << alGetString(error);
   }
-
-
 }
 
-- 
GitLab