aboutsummaryrefslogtreecommitdiff
path: root/src/pcm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pcm.c')
-rw-r--r--src/pcm.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/pcm.c b/src/pcm.c
index d681563..1b2103a 100644
--- a/src/pcm.c
+++ b/src/pcm.c
@@ -1218,6 +1218,22 @@ int pcm_start(struct pcm *pcm)
return 0;
}
+/** Drains a PCM.
+ * @param pcm A PCM handle.
+ * @return On success, zero; on failure, a negative number.
+ * @ingroup libtinyalsa-pcm
+ */
+int pcm_drain(struct pcm *pcm)
+{
+ if (!pcm_is_ready(pcm))
+ return -1;
+
+ if (pcm->ops->ioctl(pcm->data, SNDRV_PCM_IOCTL_DRAIN) < 0)
+ return oops(pcm, errno, "cannot drain channel");
+
+ return 0;
+}
+
/** Stops a PCM.
* @param pcm A PCM handle.
* @return On success, zero; on failure, a negative number.