Ticket #1584: alsa_cloexec.diff
| File alsa_cloexec.diff, 900 bytes (added by , 17 years ago) |
|---|
-
libao2/ao_alsa.c
480 480 } 481 481 482 482 if (!alsa_handler) { 483 struct pollfd *pollfds; 484 int fd_count; 483 485 //modes = 0, SND_PCM_NONBLOCK, SND_PCM_ASYNC 484 486 if ((err = try_open_device(alsa_device, open_mode, format == AF_FORMAT_AC3)) < 0) 485 487 { … … 494 496 return 0; 495 497 } 496 498 } 499 fd_count = snd_pcm_poll_descriptors_count(alsa_handler); 500 pollfds = calloc(fd_count, sizeof(*pollfds)); 501 snd_pcm_poll_descriptors(alsa_handler, pollfds, fd_count); 502 while (fd_count-- >= 0) fcntl(pollfds[fd_count].fd, F_SETFD, FD_CLOEXEC); 503 free(pollfds); 497 504 498 505 if ((err = snd_pcm_nonblock(alsa_handler, 0)) < 0) { 499 506 mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_ErrorSetBlockMode, snd_strerror(err));
