From 7e01443ecc2c887e943d4e88070665a24f1d2218 Mon Sep 17 00:00:00 2001 From: Kevin Groeneveld Date: Fri, 4 Apr 2025 15:59:59 -0400 Subject: [PATCH] pcm: hw: do not reset tstamp_type in SND_PCM_APPEND mode When the first client of plugins such as dshare open the hw device they set a default tstamp_type in snd_pcm_direct_initialize_slave based on tstamp_type from the config file. But when subsequent clients open the same plugin the snd_pcm_hw_open_fd function clobbers this default. Closes: https://github.com/alsa-project/alsa-lib/pull/450 Signed-off-by: Kevin Groeneveld Signed-off-by: Jaroslav Kysela --- src/pcm/pcm_hw.c | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/src/pcm/pcm_hw.c b/src/pcm/pcm_hw.c index f3fbcb6e..c99b186a 100644 --- a/src/pcm/pcm_hw.c +++ b/src/pcm/pcm_hw.c @@ -1665,26 +1665,28 @@ int snd_pcm_hw_open_fd(snd_pcm_t **pcmp, const char *name, int fd, } } + if (!(mode & SND_PCM_APPEND)) { #if defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_MONOTONIC) - if (SNDRV_PROTOCOL_VERSION(2, 0, 9) <= ver) { - struct timespec timespec; - if (clock_gettime(CLOCK_MONOTONIC, ×pec) == 0) { - int on = SNDRV_PCM_TSTAMP_TYPE_MONOTONIC; - if (ioctl(fd, SNDRV_PCM_IOCTL_TTSTAMP, &on) < 0) { + if (SNDRV_PROTOCOL_VERSION(2, 0, 9) <= ver) { + struct timespec timespec; + if (clock_gettime(CLOCK_MONOTONIC, ×pec) == 0) { + int on = SNDRV_PCM_TSTAMP_TYPE_MONOTONIC; + if (ioctl(fd, SNDRV_PCM_IOCTL_TTSTAMP, &on) < 0) { + ret = -errno; + SNDMSG("TTSTAMP failed"); + return ret; + } + tstamp_type = SND_PCM_TSTAMP_TYPE_MONOTONIC; + } + } else +#endif + if (SNDRV_PROTOCOL_VERSION(2, 0, 5) <= ver) { + int on = 1; + if (ioctl(fd, SNDRV_PCM_IOCTL_TSTAMP, &on) < 0) { ret = -errno; - SNDMSG("TTSTAMP failed"); + SNDMSG("TSTAMP failed"); return ret; } - tstamp_type = SND_PCM_TSTAMP_TYPE_MONOTONIC; - } - } else -#endif - if (SNDRV_PROTOCOL_VERSION(2, 0, 5) <= ver) { - int on = 1; - if (ioctl(fd, SNDRV_PCM_IOCTL_TSTAMP, &on) < 0) { - ret = -errno; - SNDMSG("TSTAMP failed"); - return ret; } } -- 2.47.1