[patch] snd_pcm_dmix_close: raise semaphore if unable to discard

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This patch causes snd_pcm_dmix_close() to up a semaphore after downing it 
if it is unable to discard it.  It prevents some deadlock that I am 
getting when a couple of applications interact and one of them closes the 
device and later re-opens it.

--

--- src/pcm/pcm_dmix.c.orig	2007-10-17 20:19:47.000000000 -0400
+++ src/pcm/pcm_dmix.c	2007-10-17 20:50:46.000000000 -0400
@@ -652,8 +652,11 @@
   	if (dmix->client)
   		snd_pcm_direct_client_discard(dmix);
   	shm_sum_discard(dmix);
-	if (snd_pcm_direct_shm_discard(dmix))
-		snd_pcm_direct_semaphore_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);
+		}
+	}
  	else
  		snd_pcm_direct_semaphore_up(dmix, DIRECT_IPC_SEM_CLIENT);
  	free(dmix->bindings);
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux