]> code.delx.au - pulseaudio/commitdiff
alsa: disable period event only with tsched=1
authorLennart Poettering <lennart@poettering.net>
Mon, 5 Oct 2009 22:17:24 +0000 (00:17 +0200)
committerLennart Poettering <lennart@poettering.net>
Mon, 5 Oct 2009 22:17:54 +0000 (00:17 +0200)
src/modules/alsa/alsa-sink.c
src/modules/alsa/alsa-source.c
src/modules/alsa/alsa-util.c
src/modules/alsa/alsa-util.h

index 22e88b4ac435ed9ae6a9523aa582cb118a1107b7..37419d98c426f21d7cb2860b66667e7495ff2351 100644 (file)
@@ -927,7 +927,7 @@ static int update_sw_params(struct userdata *u) {
 
     pa_log_debug("setting avail_min=%lu", (unsigned long) avail_min);
 
-    if ((err = pa_alsa_set_sw_params(u->pcm_handle, avail_min)) < 0) {
+    if ((err = pa_alsa_set_sw_params(u->pcm_handle, avail_min, !u->use_tsched)) < 0) {
         pa_log("Failed to set software parameters: %s", pa_alsa_strerror(err));
         return err;
     }
index fa3ac0aacafca137ef5b2ae9772bec209d90e0e8..37dd64765bbed33cd5f2d0a6651a24dd3f6ef720 100644 (file)
@@ -877,7 +877,7 @@ static int update_sw_params(struct userdata *u) {
 
     pa_log_debug("setting avail_min=%lu", (unsigned long) avail_min);
 
-    if ((err = pa_alsa_set_sw_params(u->pcm_handle, avail_min)) < 0) {
+    if ((err = pa_alsa_set_sw_params(u->pcm_handle, avail_min, !u->use_tsched)) < 0) {
         pa_log("Failed to set software parameters: %s", pa_alsa_strerror(err));
         return err;
     }
index 43a8e82900a24d97ebad1ad14fdcadd30597660b..0e22d17e467aaca47d8f004940a3a5461717204d 100644 (file)
@@ -403,7 +403,7 @@ finish:
     return ret;
 }
 
-int pa_alsa_set_sw_params(snd_pcm_t *pcm, snd_pcm_uframes_t avail_min) {
+int pa_alsa_set_sw_params(snd_pcm_t *pcm, snd_pcm_uframes_t avail_min, pa_bool_t period_event) {
     snd_pcm_sw_params_t *swparams;
     snd_pcm_uframes_t boundary;
     int err;
@@ -417,7 +417,7 @@ int pa_alsa_set_sw_params(snd_pcm_t *pcm, snd_pcm_uframes_t avail_min) {
         return err;
     }
 
-    if ((err = snd_pcm_sw_params_set_period_event(pcm, swparams, 0)) < 0) {
+    if ((err = snd_pcm_sw_params_set_period_event(pcm, swparams, period_event)) < 0) {
         pa_log_warn("Unable to disable period event: %s\n", pa_alsa_strerror(err));
         return err;
     }
index 265cd28c05aa12f94b755930a80a7e129e755d93..f6206fe23631a71e43fe76320ccbf5df46a792a0 100644 (file)
@@ -51,7 +51,8 @@ int pa_alsa_set_hw_params(
 
 int pa_alsa_set_sw_params(
         snd_pcm_t *pcm,
-        snd_pcm_uframes_t avail_min);
+        snd_pcm_uframes_t avail_min,
+        pa_bool_t period_event);
 
 /* Picks a working mapping from the profile set based on the specified ss/map */
 snd_pcm_t *pa_alsa_open_by_device_id_auto(