Avoid using a Sleep() wrapper
This commit is contained in:
parent
184cf30cf7
commit
b020dd13fd
@ -94,9 +94,9 @@ static int ALCnullBackend_mixerProc(void *ptr)
|
|||||||
}
|
}
|
||||||
if(avail-done < device->UpdateSize)
|
if(avail-done < device->UpdateSize)
|
||||||
{
|
{
|
||||||
ALuint restTime = (ALuint)((device->UpdateSize - (avail-done)) * 1000 /
|
long restTime = (long)((device->UpdateSize - (avail-done)) * 1000000000 /
|
||||||
device->Frequency);
|
device->Frequency);
|
||||||
Sleep(restTime);
|
al_nssleep(0, restTime);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -131,7 +131,7 @@ static int ALCplaybackOSS_mixerProc(void *ptr)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
Sleep(1);
|
al_nssleep(0, 1000000);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -362,7 +362,7 @@ static int ALCcaptureOSS_recordProc(void *ptr)
|
|||||||
}
|
}
|
||||||
if(amt == 0)
|
if(amt == 0)
|
||||||
{
|
{
|
||||||
Sleep(1);
|
al_nssleep(0, 1000000);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if(self->doCapture)
|
if(self->doCapture)
|
||||||
|
@ -783,7 +783,7 @@ static int ALCpulsePlayback_mixerProc(void *ptr)
|
|||||||
if(o) pa_operation_unref(o);
|
if(o) pa_operation_unref(o);
|
||||||
}
|
}
|
||||||
pa_threaded_mainloop_unlock(self->loop);
|
pa_threaded_mainloop_unlock(self->loop);
|
||||||
Sleep(1);
|
al_nssleep(0, 1000000);
|
||||||
pa_threaded_mainloop_lock(self->loop);
|
pa_threaded_mainloop_lock(self->loop);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -86,7 +86,7 @@ static int SolarisProc(void *ptr)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
Sleep(1);
|
al_nssleep(0, 1000000);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,8 +93,8 @@ static int WaveProc(void *ptr)
|
|||||||
ALuint now, start;
|
ALuint now, start;
|
||||||
ALuint64 avail, done;
|
ALuint64 avail, done;
|
||||||
size_t fs;
|
size_t fs;
|
||||||
const ALuint restTime = (ALuint64)Device->UpdateSize * 1000 /
|
const long restTime = (long)((ALuint64)Device->UpdateSize * 1000000000 /
|
||||||
Device->Frequency / 2;
|
Device->Frequency / 2);
|
||||||
|
|
||||||
SetThreadName(MIXER_THREAD_NAME);
|
SetThreadName(MIXER_THREAD_NAME);
|
||||||
|
|
||||||
@ -116,7 +116,7 @@ static int WaveProc(void *ptr)
|
|||||||
}
|
}
|
||||||
if(avail-done < Device->UpdateSize)
|
if(avail-done < Device->UpdateSize)
|
||||||
{
|
{
|
||||||
Sleep(restTime);
|
al_nssleep(0, restTime);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,7 +30,6 @@ FILE *al_fopen(const char *fname, const char *mode);
|
|||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
|
|
||||||
ALuint timeGetTime(void);
|
ALuint timeGetTime(void);
|
||||||
void Sleep(ALuint t);
|
|
||||||
|
|
||||||
#define althread_key_t pthread_key_t
|
#define althread_key_t pthread_key_t
|
||||||
#define althread_key_create pthread_key_create
|
#define althread_key_create pthread_key_create
|
||||||
|
@ -451,16 +451,6 @@ ALuint timeGetTime(void)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void Sleep(ALuint t)
|
|
||||||
{
|
|
||||||
struct timespec tv, rem;
|
|
||||||
tv.tv_nsec = (t*1000000)%1000000000;
|
|
||||||
tv.tv_sec = t/1000;
|
|
||||||
|
|
||||||
while(nanosleep(&tv, &rem) == -1 && errno == EINTR)
|
|
||||||
tv = rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef HAVE_DLFCN_H
|
#ifdef HAVE_DLFCN_H
|
||||||
|
|
||||||
void *LoadLib(const char *name)
|
void *LoadLib(const char *name)
|
||||||
|
@ -37,6 +37,8 @@ extern inline int almtx_lock(almtx_t *mtx);
|
|||||||
extern inline int almtx_unlock(almtx_t *mtx);
|
extern inline int almtx_unlock(almtx_t *mtx);
|
||||||
extern inline int almtx_trylock(almtx_t *mtx);
|
extern inline int almtx_trylock(almtx_t *mtx);
|
||||||
|
|
||||||
|
extern inline void al_nssleep(time_t sec, long nsec);
|
||||||
|
|
||||||
|
|
||||||
#define THREAD_STACK_SIZE (1*1024*1024) /* 1MB */
|
#define THREAD_STACK_SIZE (1*1024*1024) /* 1MB */
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
#define AL_THREADS_H
|
#define AL_THREADS_H
|
||||||
|
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
@ -163,4 +164,15 @@ int almtx_timedlock(almtx_t *mtx, const struct timespec *ts);
|
|||||||
|
|
||||||
void SetThreadName(const char *name);
|
void SetThreadName(const char *name);
|
||||||
|
|
||||||
|
|
||||||
|
inline void al_nssleep(time_t sec, long nsec)
|
||||||
|
{
|
||||||
|
struct timespec ts, rem;
|
||||||
|
ts.tv_sec = sec;
|
||||||
|
ts.tv_nsec = nsec;
|
||||||
|
|
||||||
|
while(althrd_sleep(&ts, &rem) == -1 && errno == EINTR)
|
||||||
|
ts = rem;
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* AL_THREADS_H */
|
#endif /* AL_THREADS_H */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user