summaryrefslogtreecommitdiff
path: root/palsa.c
diff options
context:
space:
mode:
authorGravatar waker <wakeroid@gmail.com>2009-08-17 20:02:22 +0200
committerGravatar waker <wakeroid@gmail.com>2009-08-17 20:02:22 +0200
commitf7c785122aa6c2015010f1b8ace5f811e4b8efaf (patch)
tree23130709f6354ce15e98f0bd69cec97941d0290c /palsa.c
parent939c26369d53241ff6e66c08a2cf262aa547aa90 (diff)
disabled alsa hwpause to fix pausing
Diffstat (limited to 'palsa.c')
-rw-r--r--palsa.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/palsa.c b/palsa.c
index 30c5e210..eea4a743 100644
--- a/palsa.c
+++ b/palsa.c
@@ -88,7 +88,7 @@ palsa_init (void) {
goto open_error;
}
- canpause = snd_pcm_hw_params_can_pause (hw_params);
+ canpause = 0;//snd_pcm_hw_params_can_pause (hw_params);
int val = alsa_rate;
int ret = 0;
@@ -149,6 +149,8 @@ palsa_init (void) {
goto open_error;
}
+ snd_pcm_start (audio);
+
// take returned fragsize
samplebuffer = malloc (bufsize);
@@ -157,7 +159,6 @@ palsa_init (void) {
printf ("AUDIO: Unable to allocate memory for sample buffers.\n");
goto open_error;
}
- snd_pcm_pause (audio, 1); // put into STOPPED state
alsa_terminate = 0;
mutex = mutex_create ();
@@ -202,6 +203,7 @@ palsa_hw_pause (int pause) {
}
else {
snd_pcm_prepare (audio);
+ snd_pcm_start (audio);
}
hwpaused = pause;
}
@@ -221,7 +223,7 @@ palsa_play (void) {
}
if (state != 1) {
state = 1;
- palsa_hw_pause (0);
+ snd_pcm_start (audio);
}
return 0;
}
@@ -231,7 +233,7 @@ int
palsa_stop (void) {
// set stop state
state = 0;
- palsa_hw_pause (1);
+ snd_pcm_drop (audio);
return 0;
}
@@ -257,8 +259,10 @@ palsa_pause (void) {
int
palsa_unpause (void) {
// unset pause state
- state = 1;
- palsa_hw_pause (0);
+ if (state == 2) {
+ state = 1;
+ palsa_hw_pause (0);
+ }
return 0;
}