Fix condition check for stopping stream playback
[alure.git] / examples / alureplay.c
blob50ee2e858bc80a6d90c25a127ec5c308613c222f
1 #include <stdio.h>
3 #include "AL/alure.h"
5 int main( int argc, char **argv)
7 ALuint src, buf;
8 ALint state;
10 if(argc < 2)
12 fprintf(stderr, "Usage %s <soundfile>\n", argv[0]);
13 return 1;
16 if(!alureInitDevice(NULL, NULL))
18 fprintf(stderr, "Failed to open OpenAL device: %s\n", alureGetErrorString());
19 return 1;
22 alGenSources(1, &src);
23 if(alGetError() != AL_NO_ERROR)
25 fprintf(stderr, "Failed to create OpenAL source!\n");
26 alureShutdownDevice();
27 return 1;
30 buf = alureCreateBufferFromFile(argv[1]);
31 if(!buf)
33 fprintf(stderr, "Could not load %s: %s\n", argv[1], alureGetErrorString());
34 alDeleteSources(1, &src);
36 alureShutdownDevice();
37 return 1;
40 alSourcei(src, AL_BUFFER, buf);
41 alSourcePlay(src);
42 if(alGetError() != AL_NO_ERROR)
44 fprintf(stderr, "Failed to start source!\n");
45 alDeleteSources(1, &src);
46 alDeleteBuffers(1, &buf);
48 alureShutdownDevice();
49 return 1;
52 do {
53 alureSleep(0.001);
54 alGetSourcei(src, AL_SOURCE_STATE, &state);
55 } while(alGetError() == AL_NO_ERROR && state == AL_PLAYING);
57 alDeleteSources(1, &src);
58 alDeleteBuffers(1, &buf);
60 alureShutdownDevice();
61 return 0;