Commit 4ee8396f authored by Max Kellermann's avatar Max Kellermann Committed by Eric Wong

use the notify API in the main thread

git-svn-id: https://svn.musicpd.org/mpd/trunk@7283 09075e82-0dd4-0310-85a5-a0d7c8717e4f
parent b7ac3fab
...@@ -56,6 +56,8 @@ typedef struct _Options { ...@@ -56,6 +56,8 @@ typedef struct _Options {
int verbose; int verbose;
} Options; } Options;
static Notify main_notify;
/* /*
* from git-1.3.0, needed for solaris * from git-1.3.0, needed for solaris
*/ */
...@@ -378,6 +380,16 @@ static void killFromPidFile(char *cmd, int killOption) ...@@ -378,6 +380,16 @@ static void killFromPidFile(char *cmd, int killOption)
exit(EXIT_SUCCESS); 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[]) int main(int argc, char *argv[])
{ {
Options options; Options options;
...@@ -420,6 +432,8 @@ int main(int argc, char *argv[]) ...@@ -420,6 +432,8 @@ int main(int argc, char *argv[])
initNormalization(); initNormalization();
initInputStream(); initInputStream();
notifyInit(&main_notify);
daemonize(&options); daemonize(&options);
setup_log_output(options.stdOutput); setup_log_output(options.stdOutput);
...@@ -433,6 +447,8 @@ int main(int argc, char *argv[]) ...@@ -433,6 +447,8 @@ int main(int argc, char *argv[])
playerInit(); playerInit();
read_state_file(); read_state_file();
notifyEnter(&main_notify);
while (COMMAND_RETURN_KILL != doIOForInterfaces() && while (COMMAND_RETURN_KILL != doIOForInterfaces() &&
COMMAND_RETURN_KILL != handlePendingSignals()) { COMMAND_RETURN_KILL != handlePendingSignals()) {
syncPlayerAndPlaylist(); syncPlayerAndPlaylist();
......
...@@ -33,9 +33,6 @@ ...@@ -33,9 +33,6 @@
#include "sig_handlers.h" #include "sig_handlers.h"
#include "os_compat.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); static void playerCloseAudio(void);
void wakeup_player_nb(void) void wakeup_player_nb(void)
...@@ -48,12 +45,7 @@ static void wakeup_player(void) ...@@ -48,12 +45,7 @@ static void wakeup_player(void)
{ {
PlayerControl *pc = &(getPlayerData()->playerControl); PlayerControl *pc = &(getPlayerData()->playerControl);
notifySignal(&pc->notify); notifySignal(&pc->notify);
pthread_cond_wait(&main_wakeup, &main_wakeup_mutex); wait_main_task();
}
void wakeup_main_task(void)
{
pthread_cond_signal(&main_wakeup);
} }
void player_sleep(void) void player_sleep(void)
......
...@@ -80,6 +80,8 @@ typedef struct _PlayerControl { ...@@ -80,6 +80,8 @@ typedef struct _PlayerControl {
void wakeup_main_task(void); void wakeup_main_task(void);
void wait_main_task(void);
void wakeup_player_nb(void); void wakeup_player_nb(void);
void player_sleep(void); void player_sleep(void);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment