use the notify API in the main thread
git-svn-id: https://svn.musicpd.org/mpd/trunk@7283 09075e82-0dd4-0310-85a5-a0d7c8717e4f
This commit is contained in:
parent
b7ac3fab46
commit
4ee8396f41
16
src/main.c
16
src/main.c
@ -56,6 +56,8 @@ typedef struct _Options {
|
||||
int verbose;
|
||||
} Options;
|
||||
|
||||
static Notify main_notify;
|
||||
|
||||
/*
|
||||
* from git-1.3.0, needed for solaris
|
||||
*/
|
||||
@ -378,6 +380,16 @@ static void killFromPidFile(char *cmd, int killOption)
|
||||
exit(EXIT_SUCCESS);
|
||||
}
|
||||
|
||||
void wakeup_main_task(void)
|
||||
{
|
||||
notifySignal(&main_notify);
|
||||
}
|
||||
|
||||
void wait_main_task(void)
|
||||
{
|
||||
notifySignal(&main_notify);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
Options options;
|
||||
@ -420,6 +432,8 @@ int main(int argc, char *argv[])
|
||||
initNormalization();
|
||||
initInputStream();
|
||||
|
||||
notifyInit(&main_notify);
|
||||
|
||||
daemonize(&options);
|
||||
|
||||
setup_log_output(options.stdOutput);
|
||||
@ -433,6 +447,8 @@ int main(int argc, char *argv[])
|
||||
playerInit();
|
||||
read_state_file();
|
||||
|
||||
notifyEnter(&main_notify);
|
||||
|
||||
while (COMMAND_RETURN_KILL != doIOForInterfaces() &&
|
||||
COMMAND_RETURN_KILL != handlePendingSignals()) {
|
||||
syncPlayerAndPlaylist();
|
||||
|
10
src/player.c
10
src/player.c
@ -33,9 +33,6 @@
|
||||
#include "sig_handlers.h"
|
||||
#include "os_compat.h"
|
||||
|
||||
static pthread_cond_t main_wakeup = PTHREAD_COND_INITIALIZER;
|
||||
static pthread_mutex_t main_wakeup_mutex = PTHREAD_MUTEX_INITIALIZER;
|
||||
|
||||
static void playerCloseAudio(void);
|
||||
|
||||
void wakeup_player_nb(void)
|
||||
@ -48,12 +45,7 @@ static void wakeup_player(void)
|
||||
{
|
||||
PlayerControl *pc = &(getPlayerData()->playerControl);
|
||||
notifySignal(&pc->notify);
|
||||
pthread_cond_wait(&main_wakeup, &main_wakeup_mutex);
|
||||
}
|
||||
|
||||
void wakeup_main_task(void)
|
||||
{
|
||||
pthread_cond_signal(&main_wakeup);
|
||||
wait_main_task();
|
||||
}
|
||||
|
||||
void player_sleep(void)
|
||||
|
@ -80,6 +80,8 @@ typedef struct _PlayerControl {
|
||||
|
||||
void wakeup_main_task(void);
|
||||
|
||||
void wait_main_task(void);
|
||||
|
||||
void wakeup_player_nb(void);
|
||||
|
||||
void player_sleep(void);
|
||||
|
Loading…
Reference in New Issue
Block a user