[alsa-devel] [patch] snd_pcm_dmix_close: raise semaphore if unable to discard

Takashi Iwai tiwai at suse.de
Thu Oct 18 10:23:56 CEST 2007


At Wed, 17 Oct 2007 20:55:11 -0400 (EDT),
Mike Gorse wrote:
> 
> 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.

Thanks, applied to HG tree now.


Takashi

> 
> --
> 
> --- 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 at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
> 


More information about the Alsa-devel mailing list