Merge branch 'autopulse'

This commit is contained in:
ejurgensen 2016-09-26 21:32:27 +02:00
commit 44ad4a8848
3 changed files with 16 additions and 9 deletions

View File

@ -229,11 +229,8 @@ If you select Pulseaudio, the "card" setting in the config file has no effect.
Instead all soundcards detected by Pulseaudio will be listed as speakers by Instead all soundcards detected by Pulseaudio will be listed as speakers by
forked-daapd. forked-daapd.
There is some one-time setup required to use Pulseaudio: There is some one-time setup required to use Pulseaudio: Add the forked-daapd
- Add the forked-daapd user (probably "daapd") to the "pulse-access" group. user (probably "daapd") to the "pulse-access" group.
- On non-desktop/headless systems, you will need to run Pulseaudio in system
mode. For this, you will probably want to install a SystemD .service file
(Google will help you), so Pulseaudio automatically starts at boot.
## MP3 network streaming (streaming to iOS) ## MP3 network streaming (streaming to iOS)

View File

@ -346,9 +346,9 @@ signal_signalfd_cb(int fd, short event, void *arg)
switch (info.ssi_signo) switch (info.ssi_signo)
{ {
case SIGCHLD: case SIGCHLD:
DPRINTF(E_LOG, L_MAIN, "Got SIGCHLD, reaping children\n"); DPRINTF(E_LOG, L_MAIN, "Got SIGCHLD\n");
while (wait3(&status, WNOHANG, NULL) > 0) while (waitpid(-1, &status, WNOHANG) > 0)
/* Nothing. */ ; /* Nothing. */ ;
break; break;
@ -391,9 +391,9 @@ signal_kqueue_cb(int fd, short event, void *arg)
switch (ke.ident) switch (ke.ident)
{ {
case SIGCHLD: case SIGCHLD:
DPRINTF(E_LOG, L_MAIN, "Got SIGCHLD, reaping children\n"); DPRINTF(E_LOG, L_MAIN, "Got SIGCHLD\n");
while (wait3(&status, WNOHANG, NULL) > 0) while (waitpid(-1, &status, WNOHANG) > 0)
/* Nothing. */ ; /* Nothing. */ ;
break; break;

View File

@ -786,6 +786,16 @@ pulse_init(void)
if (type && (strcasecmp(type, "pulseaudio") != 0)) if (type && (strcasecmp(type, "pulseaudio") != 0))
return -1; return -1;
// In some situations Pulseaudio won't autospawn, and we don't want to trouble
// the user with setting up system mode (which isn't recommended anyway), so
// we use this sledgehammer approach
ret = system("pulseaudio --start");
if (ret < 0)
{
DPRINTF(E_LOG, L_LAUDIO, "Could not start Pulseaudio\n");
return -1;
}
ret = 0; ret = 0;
if (!(p->mainloop = pa_threaded_mainloop_new())) if (!(p->mainloop = pa_threaded_mainloop_new()))