aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvivek mehta <mvivek@codeaurora.org>2016-07-29 01:38:52 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-07-29 01:38:52 +0000
commit90fb75ab8790f2243cd691aab9357657ebad914e (patch)
tree38f669fe09ec65532fffb00a5507ae273b4ba066
parentf25a2bf2de97ba15dcbeed2eb0b635f63a3f13dc (diff)
parent51f47ff38e553ecb1823e44c47315c41e408ca27 (diff)
downloadtinyalsa-nougat-mr2-release.tar.gz
am: 51f47ff38e Change-Id: Ie0856c473186d18dbe634c6a5a146836adfe6b0d
-rw-r--r--pcm.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/pcm.c b/pcm.c
index 394faba..78e1cea 100644
--- a/pcm.c
+++ b/pcm.c
@@ -855,12 +855,18 @@ struct pcm *pcm_open(unsigned int card, unsigned int device,
flags & PCM_IN ? 'c' : 'p');
pcm->flags = flags;
- pcm->fd = open(fn, O_RDWR);
+ pcm->fd = open(fn, O_RDWR|O_NONBLOCK);
if (pcm->fd < 0) {
oops(pcm, errno, "cannot open device '%s'", fn);
return pcm;
}
+ if (fcntl(pcm->fd, F_SETFL, fcntl(pcm->fd, F_GETFL) &
+ ~O_NONBLOCK) < 0) {
+ oops(pcm, errno, "failed to reset blocking mode '%s'", fn);
+ goto fail_close;
+ }
+
if (ioctl(pcm->fd, SNDRV_PCM_IOCTL_INFO, &info)) {
oops(pcm, errno, "cannot get info");
goto fail_close;
@@ -884,7 +890,7 @@ struct pcm *pcm_open(unsigned int card, unsigned int device,
if (flags & PCM_NOIRQ) {
if (!(flags & PCM_MMAP)) {
oops(pcm, -EINVAL, "noirq only currently supported with mmap().");
- goto fail;
+ goto fail_close;
}
params.flags |= SNDRV_PCM_HW_PARAMS_NO_PERIOD_WAKEUP;