aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2021-07-02 01:08:14 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2021-07-02 01:08:14 +0000
commitee96276d905422ef51743fca195c3eceb7e06909 (patch)
treec1fdd4e6db06429e7a726e1453292e3179f810ef
parent8abc00660876849c1daaa89fc3f9039ec99931f7 (diff)
parent6d0fa28a0330aec87fc1b7156f8c67f61aad2943 (diff)
downloadtinyalsa-android12L-d2-s6-release.tar.gz
Change-Id: If8e8a5c212612d922df6f75bc11c9bd4f74314d1
-rw-r--r--pcm.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/pcm.c b/pcm.c
index 1d84dc0..1709be9 100644
--- a/pcm.c
+++ b/pcm.c
@@ -912,8 +912,10 @@ struct pcm *pcm_open(unsigned int card, unsigned int device,
return &bad_pcm; /* TODO: could support default config here */
}
pcm = calloc(1, sizeof(struct pcm));
- if (!pcm)
+ if (!pcm) {
+ oops(&bad_pcm, ENOMEM, "can't allocate PCM object");
return &bad_pcm; /* TODO: could support default config here */
+ }
pcm->config = *config;
pcm->flags = flags;
@@ -927,13 +929,13 @@ struct pcm *pcm_open(unsigned int card, unsigned int device,
pcm->fd = pcm->ops->open(card, device, flags, &pcm->data, pcm->snd_node);
if (pcm->fd < 0) {
- oops(pcm, errno, "cannot open device %u for card %u",
+ oops(&bad_pcm, errno, "cannot open device %u for card %u",
device, card);
goto fail_open;
}
if (pcm->ops->ioctl(pcm->data, SNDRV_PCM_IOCTL_INFO, &info)) {
- oops(pcm, errno, "cannot get info");
+ oops(&bad_pcm, errno, "cannot get info");
goto fail_close;
}
pcm->subdevice = info.subdevice;
@@ -955,7 +957,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().");
+ oops(&bad_pcm, EINVAL, "noirq only currently supported with mmap().");
goto fail_close;
}
@@ -971,7 +973,7 @@ struct pcm *pcm_open(unsigned int card, unsigned int device,
SNDRV_PCM_ACCESS_RW_INTERLEAVED);
if (pcm->ops->ioctl(pcm->data, SNDRV_PCM_IOCTL_HW_PARAMS, &params)) {
- oops(pcm, errno, "cannot set hw params");
+ oops(&bad_pcm, errno, "cannot set hw params");
goto fail_close;
}
@@ -985,7 +987,7 @@ struct pcm *pcm_open(unsigned int card, unsigned int device,
pcm_frames_to_bytes(pcm, pcm->buffer_size),
PROT_READ | PROT_WRITE, MAP_FILE | MAP_SHARED, 0);
if (pcm->mmap_buffer == MAP_FAILED) {
- oops(pcm, errno, "failed to mmap buffer %d bytes\n",
+ oops(&bad_pcm, errno, "failed to mmap buffer %d bytes\n",
pcm_frames_to_bytes(pcm, pcm->buffer_size));
goto fail_close;
}
@@ -1033,13 +1035,13 @@ struct pcm *pcm_open(unsigned int card, unsigned int device,
pcm->boundary *= 2;
if (pcm->ops->ioctl(pcm->data, SNDRV_PCM_IOCTL_SW_PARAMS, &sparams)) {
- oops(pcm, errno, "cannot set sw params");
+ oops(&bad_pcm, errno, "cannot set sw params");
goto fail;
}
rc = pcm_hw_mmap_status(pcm);
if (rc < 0) {
- oops(pcm, errno, "mmap status failed");
+ oops(&bad_pcm, errno, "mmap status failed");
goto fail;
}
@@ -1048,7 +1050,7 @@ struct pcm *pcm_open(unsigned int card, unsigned int device,
int arg = SNDRV_PCM_TSTAMP_TYPE_MONOTONIC;
rc = pcm->ops->ioctl(pcm->data, SNDRV_PCM_IOCTL_TTSTAMP, &arg);
if (rc < 0) {
- oops(pcm, errno, "cannot set timestamp type");
+ oops(&bad_pcm, errno, "cannot set timestamp type");
goto fail;
}
}