1 #include "alutInternal.h"
3 #if HAVE_NANOSLEEP && HAVE_TIME_H
6 #elif HAVE_USLEEP && HAVE_UNISTD_H
8 #elif HAVE_SLEEP && HAVE_WINDOWS_H
11 #error No way to sleep on this platform
15 alutSleep (ALfloat duration)
19 _alutSetError (ALUT_ERROR_INVALID_VALUE);
24 ALuint seconds = (ALuint) duration;
25 ALfloat rest = duration - (ALfloat) seconds;
27 #if HAVE_NANOSLEEP && HAVE_TIME_H
29 ALuint microSecs = (ALuint) (rest * 1000000);
30 struct timespec t, remainingTime;
31 t.tv_sec = (time_t) seconds;
32 t.tv_nsec = ((long) microSecs) * 1000;
34 /* At least the interaction of nanosleep and signals is specified! */
35 while (nanosleep (&t, &remainingTime) < 0)
41 /* If we received a signal, let's try again with the remaining time. */
42 t.tv_sec = remainingTime.tv_sec;
43 t.tv_nsec = remainingTime.tv_nsec;
46 #elif HAVE_USLEEP && HAVE_UNISTD_H
53 usleep ((unsigned int) (rest * 1000000));
55 #elif HAVE_SLEEP && HAVE_WINDOWS_H
62 Sleep ((DWORD) (rest * 1000));
71 _alutMalloc (size_t size)
73 ALvoid *ptr = malloc (size == 0 ? 1 : size);
76 _alutSetError (ALUT_ERROR_OUT_OF_MEMORY);
82 _alutFormatConstruct (ALint numChannels, ALint bitsPerSample, ALenum *format)
87 switch (bitsPerSample)
90 *format = AL_FORMAT_MONO8;
93 *format = AL_FORMAT_MONO16;
98 switch (bitsPerSample)
101 *format = AL_FORMAT_STEREO8;
104 *format = AL_FORMAT_STEREO16;
113 _alutFormatGetNumChannels (ALenum format, ALint *numChannels)
117 case AL_FORMAT_MONO8:
118 case AL_FORMAT_MONO16:
121 case AL_FORMAT_STEREO8:
122 case AL_FORMAT_STEREO16:
130 _alutFormatGetBitsPerSample (ALenum format, ALint *bitsPerSample)
134 case AL_FORMAT_MONO8:
135 case AL_FORMAT_STEREO8:
138 case AL_FORMAT_MONO16:
139 case AL_FORMAT_STEREO16: