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
14
ALboolean alutSleep(ALfloat duration)
18
_alutSetError(ALUT_ERROR_INVALID_VALUE);
23
ALuint seconds = (ALuint) duration;
24
ALfloat rest = duration - (ALfloat) seconds;
26
#if HAVE_NANOSLEEP && HAVE_TIME_H
28
ALuint microSecs = (ALuint) (rest * 1000000);
29
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));
70
ALvoid *_alutMalloc(size_t size)
72
ALvoid *ptr = malloc(size == 0 ? 1 : size);
76
_alutSetError(ALUT_ERROR_OUT_OF_MEMORY);
81
ALboolean _alutFormatConstruct(ALint numChannels, ALint bitsPerSample, ALenum * format)
86
switch (bitsPerSample)
89
*format = AL_FORMAT_MONO8;
92
*format = AL_FORMAT_MONO16;
97
switch (bitsPerSample)
100
*format = AL_FORMAT_STEREO8;
103
*format = AL_FORMAT_STEREO16;
111
ALboolean _alutFormatGetNumChannels(ALenum format, ALint * numChannels)
115
case AL_FORMAT_MONO8:
116
case AL_FORMAT_MONO16:
119
case AL_FORMAT_STEREO8:
120
case AL_FORMAT_STEREO16:
127
ALboolean _alutFormatGetBitsPerSample(ALenum format, ALint * bitsPerSample)
131
case AL_FORMAT_MONO8:
132
case AL_FORMAT_STEREO8:
135
case AL_FORMAT_MONO16:
136
case AL_FORMAT_STEREO16: