aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/alsa.c
diff options
context:
space:
mode:
Diffstat (limited to 'Alc/alsa.c')
-rw-r--r--Alc/alsa.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/Alc/alsa.c b/Alc/alsa.c
index 76f12fdb..cfe80640 100644
--- a/Alc/alsa.c
+++ b/Alc/alsa.c
@@ -271,6 +271,8 @@ static ALuint ALSAProc(ALvoid *ptr)
char *WritePtr;
int err;
+ EnableRTPrio();
+
while(!data->killNow)
{
int state = verify_state(data->pcmHandle);
@@ -343,6 +345,8 @@ static ALuint ALSANoMMapProc(ALvoid *ptr)
snd_pcm_sframes_t avail;
char *WritePtr;
+ EnableRTPrio();
+
while(!data->killNow)
{
int state = verify_state(data->pcmHandle);
@@ -396,6 +400,8 @@ static ALuint ALSANoMMapCaptureProc(ALvoid *ptr)
alsa_data *data = (alsa_data*)pDevice->ExtraData;
snd_pcm_sframes_t avail;
+ EnableRTPrio();
+
while(!data->killNow)
{
int state = verify_state(data->pcmHandle);
@@ -669,6 +675,9 @@ static ALCboolean alsa_reset_playback(ALCdevice *device)
AL_PRINT("buffer malloc failed\n");
return ALC_FALSE;
}
+ device->UpdateSize = periodSizeInFrames;
+ device->NumUpdates = periods;
+ device->Frequency = rate;
data->thread = StartThread(ALSANoMMapProc, device);
}
else
@@ -679,6 +688,9 @@ static ALCboolean alsa_reset_playback(ALCdevice *device)
AL_PRINT("prepare error: %s\n", psnd_strerror(i));
return ALC_FALSE;
}
+ device->UpdateSize = periodSizeInFrames;
+ device->NumUpdates = periods;
+ device->Frequency = rate;
data->thread = StartThread(ALSAProc, device);
}
if(data->thread == NULL)
@@ -689,10 +701,6 @@ static ALCboolean alsa_reset_playback(ALCdevice *device)
return ALC_FALSE;
}
- device->UpdateSize = periodSizeInFrames;
- device->NumUpdates = periods;
- device->Frequency = rate;
-
return ALC_TRUE;
}