You need to sign in or sign up before continuing.
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