]> git.alsa-project.org Git - alsa-lib.git/commitdiff
pcm: add support for new STATUS_EXT ioctl
authorPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Wed, 1 Jul 2015 20:40:56 +0000 (15:40 -0500)
committerTakashi Iwai <tiwai@suse.de>
Thu, 2 Jul 2015 15:02:04 +0000 (17:02 +0200)
use STATUS_EXT ioctl if PCM protocol is > 2.0.12
All audio timestamp configuration will be ignored with an
older protocol.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
src/pcm/pcm_hw.c

index c34b766ee0353969d9096f0d51fe8246f2e843d0..232b19736db9b699335e9b883773bec5694b2a97 100644 (file)
@@ -510,10 +510,18 @@ static int snd_pcm_hw_status(snd_pcm_t *pcm, snd_pcm_status_t * status)
 {
        snd_pcm_hw_t *hw = pcm->private_data;
        int fd = hw->fd, err;
-       if (ioctl(fd, SNDRV_PCM_IOCTL_STATUS, status) < 0) {
-               err = -errno;
-               SYSMSG("SNDRV_PCM_IOCTL_STATUS failed (%i)", err);
-               return err;
+       if (SNDRV_PROTOCOL_VERSION(2, 0, 13) > hw->version) {
+               if (ioctl(fd, SNDRV_PCM_IOCTL_STATUS, status) < 0) {
+                       err = -errno;
+                       SYSMSG("SNDRV_PCM_IOCTL_STATUS failed (%i)", err);
+                       return err;
+               }
+       } else {
+               if (ioctl(fd, SNDRV_PCM_IOCTL_STATUS_EXT, status) < 0) {
+                       err = -errno;
+                       SYSMSG("SNDRV_PCM_IOCTL_STATUS_EXT failed (%i)", err);
+                       return err;
+               }
        }
        if (SNDRV_PROTOCOL_VERSION(2, 0, 5) > hw->version) {
                status->tstamp.tv_nsec *= 1000L;