From: Mounesh Sutar sutar.mounesh@gmail.com
Signed-off-by: Mounesh Sutar sutar.mounesh@gmail.com
diff --git a/src/pcm/pcm_direct.h b/src/pcm/pcm_direct.h index 91e816c..a7c0439 100644 --- a/src/pcm/pcm_direct.h +++ b/src/pcm/pcm_direct.h @@ -263,7 +263,12 @@ static inline int snd_pcm_direct_semaphore_down(snd_pcm_direct_t *dmix, int sem_ { struct sembuf op[2] = { { sem_num, 0, 0 }, { sem_num, 1, SEM_UNDO } }; int err = semop(dmix->semid, op, 2); - if (err == 0) dmix->locked[sem_num]++; + if (err == 0) { + dmix->locked[sem_num]++; + } + else if (err == -1) { + err = -errno; + } return err; }
@@ -271,7 +276,12 @@ static inline int snd_pcm_direct_semaphore_up(snd_pcm_direct_t *dmix, int sem_nu { struct sembuf op = { sem_num, -1, SEM_UNDO | IPC_NOWAIT }; int err = semop(dmix->semid, &op, 1); - if (err == 0) dmix->locked[sem_num]--; + if (err == 0) { + dmix->locked[sem_num]--; + } + else if (err == -1) { + err = -errno; + } return err; }