Imported Upstream version 1.0.28
[platform/upstream/alsa-lib.git] / src / pcm / pcm_dmix.c
index 434fc65..4aa6d4e 100644 (file)
@@ -781,9 +781,9 @@ static int snd_pcm_dmix_close(snd_pcm_t *pcm)
        shm_sum_discard(dmix);
        if (snd_pcm_direct_shm_discard(dmix)) {
                if (snd_pcm_direct_semaphore_discard(dmix))
-                       snd_pcm_direct_semaphore_up(dmix, DIRECT_IPC_SEM_CLIENT);
+                       snd_pcm_direct_semaphore_final(dmix, DIRECT_IPC_SEM_CLIENT);
        } else
-               snd_pcm_direct_semaphore_up(dmix, DIRECT_IPC_SEM_CLIENT);
+               snd_pcm_direct_semaphore_final(dmix, DIRECT_IPC_SEM_CLIENT);
        free(dmix->bindings);
        pcm->private_data = NULL;
        free(dmix);
@@ -853,6 +853,7 @@ static int snd_pcm_dmix_htimestamp(snd_pcm_t *pcm,
                        break;
                *avail = avail1;
                *tstamp = snd_pcm_hw_fast_tstamp(dmix->spcm);
+               ok = 1;
        }
        return 0;
 }
@@ -892,6 +893,9 @@ static const snd_pcm_ops_t snd_pcm_dmix_ops = {
        .async = snd_pcm_direct_async,
        .mmap = snd_pcm_direct_mmap,
        .munmap = snd_pcm_direct_munmap,
+       .query_chmaps = snd_pcm_direct_query_chmaps,
+       .get_chmap = snd_pcm_direct_get_chmap,
+       .set_chmap = snd_pcm_direct_set_chmap,
 };
 
 static const snd_pcm_fast_ops_t snd_pcm_dmix_fast_ops = {
@@ -1100,7 +1104,7 @@ int snd_pcm_dmix_open(snd_pcm_t **pcmp, const char *name,
                
        pcm->poll_fd = dmix->poll_fd;
        pcm->poll_events = POLLIN;      /* it's different than other plugins */
-               
+       pcm->monotonic = spcm->monotonic;
        pcm->mmap_rw = 1;
        snd_pcm_set_hw_ptr(pcm, &dmix->hw_ptr, -1, 0);
        snd_pcm_set_appl_ptr(pcm, &dmix->appl_ptr, -1, 0);