瀏覽代碼

Fixed offset sound ids

Thomas Buck 11 年之前
父節點
當前提交
7e6f80090c
共有 2 個檔案被更改,包括 24 行新增29 行删除
  1. 4
    5
      include/Sound.h
  2. 20
    24
      src/Sound.cpp

+ 4
- 5
include/Sound.h 查看文件

82
     void stop(int source);
82
     void stop(int source);
83
 
83
 
84
 private:
84
 private:
85
-    bool mInit;                    //!< Guard to ensure ausio system is active
86
-    unsigned int mBuffer[256];     //!< Audio buffer id list
87
-    unsigned int mSource[256];     //!< Audio source id list
88
-    unsigned int mNextBuffer;      //!< Audio buffer id cursor
89
-    unsigned int mNextSource;      //!< Audio source id cursor
85
+    bool mInit;                //!< Guard to ensure ausio system is active
86
+    unsigned int mBuffer[256]; //!< Audio buffer id list
87
+    unsigned int mSource[256]; //!< Audio source id list
88
+    int mNext;                 //!< Audio id cursor
90
 };
89
 };
91
 
90
 
92
 #endif
91
 #endif

+ 20
- 24
src/Sound.cpp 查看文件

30
 {
30
 {
31
     mSource[0] = 0;
31
     mSource[0] = 0;
32
     mBuffer[0] = 0;
32
     mBuffer[0] = 0;
33
-    mNextBuffer = 0;
34
-    mNextSource = 0;
33
+    mNext = 0;
35
     mInit = false;
34
     mInit = false;
36
 }
35
 }
37
 
36
 
92
 {
91
 {
93
     assert(mInit == true);
92
     assert(mInit == true);
94
     assert(source >= 0);
93
     assert(source >= 0);
94
+    assert(source < mNext);
95
     assert(pos != NULL);
95
     assert(pos != NULL);
96
 
96
 
97
-    alSourcefv(mSource[source-1], AL_POSITION, pos);
97
+    alSourcefv(mSource[source], AL_POSITION, pos);
98
 }
98
 }
99
 
99
 
100
 
100
 
115
 
115
 
116
     alGetError();
116
     alGetError();
117
 
117
 
118
-    alGenBuffers(1, &mBuffer[mNextBuffer]);
118
+    alGenBuffers(1, &mBuffer[mNext]);
119
 
119
 
120
     if (alGetError() != AL_NO_ERROR)
120
     if (alGetError() != AL_NO_ERROR)
121
     {
121
     {
125
 
125
 
126
     alGetError();
126
     alGetError();
127
 
127
 
128
-    alGenSources(1, &mSource[mNextSource]);
128
+    alGenSources(1, &mSource[mNext]);
129
 
129
 
130
     if (alGetError() != AL_NO_ERROR)
130
     if (alGetError() != AL_NO_ERROR)
131
     {
131
     {
143
         return -3;
143
         return -3;
144
     }
144
     }
145
 
145
 
146
-    alBufferData(mBuffer[mNextBuffer], format, data, size, static_cast<ALsizei>(freq));
146
+    alBufferData(mBuffer[mNext], format, data, size, static_cast<ALsizei>(freq));
147
 
147
 
148
-    alSourcei(mSource[mNextSource], AL_BUFFER, mBuffer[mNextBuffer]);
148
+    alSourcei(mSource[mNext], AL_BUFFER, mBuffer[mNext]);
149
 
149
 
150
     if (flags & SoundFlagsLoop)
150
     if (flags & SoundFlagsLoop)
151
     {
151
     {
152
-        alSourcei(mSource[mNextSource], AL_LOOPING, 1);
152
+        alSourcei(mSource[mNext], AL_LOOPING, 1);
153
     }
153
     }
154
 
154
 
155
-    ++mNextBuffer;
156
-    ++mNextSource;
157
-
158
-    *source = mNextBuffer;
155
+    *source = mNext++;
159
 
156
 
160
     return 0;
157
     return 0;
161
 }
158
 }
178
 
175
 
179
     alGetError();
176
     alGetError();
180
 
177
 
181
-    alGenBuffers(1, &mBuffer[mNextBuffer]);
178
+    alGenBuffers(1, &mBuffer[mNext]);
182
 
179
 
183
     if (alGetError() != AL_NO_ERROR)
180
     if (alGetError() != AL_NO_ERROR)
184
     {
181
     {
188
 
185
 
189
     alGetError();
186
     alGetError();
190
 
187
 
191
-    alGenSources(1, &mSource[mNextSource]);
188
+    alGenSources(1, &mSource[mNext]);
192
 
189
 
193
     if (alGetError() != AL_NO_ERROR)
190
     if (alGetError() != AL_NO_ERROR)
194
     {
191
     {
197
     }
194
     }
198
 
195
 
199
     //AL_FORMAT_WAVE_EXT does not exist on Mac!"
196
     //AL_FORMAT_WAVE_EXT does not exist on Mac!"
200
-    // alBufferData(mBuffer[mNextBuffer], AL_FORMAT_WAVE_EXT, data, size, freq);
197
+    // alBufferData(mBuffer[mNext], AL_FORMAT_WAVE_EXT, data, size, freq);
201
     // Idea: Fill Buffer with
198
     // Idea: Fill Buffer with
202
     // alutLoadMemoryFromFileImage
199
     // alutLoadMemoryFromFileImage
203
     //     (const ALvoid *data, ALsizei length, ALenum *format, ALsizei *size, ALfloat *frequency)
200
     //     (const ALvoid *data, ALsizei length, ALenum *format, ALsizei *size, ALfloat *frequency)
210
     }
207
     }
211
 
208
 
212
 
209
 
213
-    alBufferData(mBuffer[mNextBuffer], format, data, size, static_cast<ALsizei>(freq));
210
+    alBufferData(mBuffer[mNext], format, data, size, static_cast<ALsizei>(freq));
214
 
211
 
215
-    alSourcei(mSource[mNextSource], AL_BUFFER, mBuffer[mNextBuffer]);
212
+    alSourcei(mSource[mNext], AL_BUFFER, mBuffer[mNext]);
216
 
213
 
217
     if (flags & SoundFlagsLoop)
214
     if (flags & SoundFlagsLoop)
218
     {
215
     {
219
-        alSourcei(mSource[mNextSource], AL_LOOPING, 1);
216
+        alSourcei(mSource[mNext], AL_LOOPING, 1);
220
     }
217
     }
221
 
218
 
222
-    ++mNextBuffer;
223
-    ++mNextSource;
224
-
225
-    *source = mNextBuffer;
219
+    *source = mNext++;
226
 
220
 
227
     //! \fixme Should free alut buffer?
221
     //! \fixme Should free alut buffer?
228
 
222
 
234
 {
228
 {
235
     assert(mInit == true);
229
     assert(mInit == true);
236
     assert(source >= 0);
230
     assert(source >= 0);
231
+    assert(source < mNext);
237
 
232
 
238
-    alSourcePlay(mSource[source-1]);
233
+    alSourcePlay(mSource[source]);
239
 }
234
 }
240
 
235
 
241
 
236
 
243
 {
238
 {
244
     assert(mInit == true);
239
     assert(mInit == true);
245
     assert(source >= 0);
240
     assert(source >= 0);
241
+    assert(source < mNext);
246
 
242
 
247
-    alSourceStop(mSource[source-1]);
243
+    alSourceStop(mSource[source]);
248
 }
244
 }
249
 
245
 

Loading…
取消
儲存