diff options
author | Kalle Wallin <kaw@linux.se> | 2004-06-14 18:32:31 +0000 |
---|---|---|
committer | Kalle Wallin <kaw@linux.se> | 2004-06-14 18:32:31 +0000 |
commit | 39758c8503fb5390afaceeff3dd5b0bca75feb97 (patch) | |
tree | 94f42a18c5cb0da8778e8525ded49fb98012bbfc /src/main.c | |
parent | 7844008980d4d1b9cb7cbd4dda4ae912e12dd7a9 (diff) | |
download | mpd-39758c8503fb5390afaceeff3dd5b0bca75feb97.tar.gz mpd-39758c8503fb5390afaceeff3dd5b0bca75feb97.tar.xz mpd-39758c8503fb5390afaceeff3dd5b0bca75feb97.zip |
Major cleanup of the mpd client code (mpc->mpdclient)
git-svn-id: https://svn.musicpd.org/ncmpc/trunk@1481 09075e82-0dd4-0310-85a5-a0d7c8717e4f
Diffstat (limited to '')
-rw-r--r-- | src/main.c | 109 |
1 files changed, 62 insertions, 47 deletions
diff --git a/src/main.c b/src/main.c index 7a44f0985..8d3a82fd2 100644 --- a/src/main.c +++ b/src/main.c @@ -26,27 +26,44 @@ #include "config.h" #include "ncmpc.h" -#include "libmpdclient.h" +#include "mpdclient.h" #include "support.h" -#include "mpc.h" #include "options.h" #include "command.h" #include "screen.h" #include "conf.h" -static mpd_client_t *mpc = NULL; -static GTimer *timer = NULL; +static mpdclient_t *mpd = NULL; +static gboolean connected = FALSE; +static GTimer *timer = NULL; + +static void +error_callback(mpdclient_t *c, int error, char *msg) +{ + D("error_callback> error=%d errorCode=%d errorAt=%d\n", + error, c->connection->errorCode, c->connection->errorAt); + D("error_callback> \"%s\"\n", msg); + switch(error) + { + case MPD_ERROR_ACK: + screen_status_printf("%s", msg); + break; + default: + screen_status_printf(_("Lost connection to %s"), options.host); + connected = FALSE; + } + doupdate(); +} void exit_and_cleanup(void) { screen_exit(); printf("\n"); - if( mpc ) + if( mpd ) { - if( mpc_error(mpc) ) - fprintf(stderr,"Error: %s\n", mpc_error_str(mpc)); - mpc_close(mpc); + mpdclient_disconnect(mpd); + mpd = mpdclient_free(mpd); } g_free(options.host); g_free(options.password); @@ -57,7 +74,7 @@ exit_and_cleanup(void) void catch_sigint( int sig ) { - printf( _("\nExiting...\n")); + printf("\n%s\n", _("Exiting...")); exit(EXIT_SUCCESS); } @@ -66,7 +83,6 @@ main(int argc, const char *argv[]) { options_t *options; struct sigaction act; - gboolean connected; const char *charset = NULL; #ifdef HAVE_LOCALE_H @@ -76,7 +92,7 @@ main(int argc, const char *argv[]) setlocale(LC_CTYPE,""); /* initialize charset conversions */ charset_init(g_get_charset(&charset)); - D(printf("charset: %s\n", charset)); + D("charset: %s\n", charset); #endif /* initialize i18n support */ @@ -133,12 +149,26 @@ main(int argc, const char *argv[]) atexit(exit_and_cleanup); /* connect to our music player daemon */ - mpc = mpc_connect(options->host, options->port, options->password); - if( mpc_error(mpc) ) - exit(EXIT_FAILURE); + mpd = mpdclient_new(); + if( mpdclient_connect(mpd, + options->host, + options->port, + 10.0, + options->password) ) + { + exit(EXIT_FAILURE); + } + connected = TRUE; + D("Connected to MPD version %d.%d.%d\n", + mpd->connection->version[0], + mpd->connection->version[1], + mpd->connection->version[2]); /* initialize curses */ - screen_init(); + screen_init(mpd); + + /* install error callback function */ + mpdclient_install_error_callback(mpd, error_callback); /* initialize timer */ timer = g_timer_new(); @@ -148,27 +178,9 @@ main(int argc, const char *argv[]) { static gdouble t = G_MAXDOUBLE; - if( connected && t>=MPD_UPDATE_TIME ) + if( connected && (t>=MPD_UPDATE_TIME || mpd->need_update) ) { - mpc_update(mpc); - if( mpc_error(mpc) == MPD_ERROR_ACK ) - { - screen_status_printf("%s", mpc_error_str(mpc)); - mpd_clearError(mpc->connection); - mpd_finishCommand(mpc->connection); - } - else if( mpc_error(mpc) ) - { - screen_status_printf(_("Lost connection to %s"), options->host); - connected = FALSE; - doupdate(); - mpd_clearError(mpc->connection); - mpd_closeConnection(mpc->connection); - mpc->connection = NULL; - } - else - mpd_finishCommand(mpc->connection); - + mpdclient_update(mpd); g_timer_start(timer); } @@ -176,36 +188,39 @@ main(int argc, const char *argv[]) { command_t cmd; - screen_update(mpc); + screen_update(mpd); if( (cmd=get_keyboard_command()) != CMD_NONE ) { - screen_cmd(mpc, cmd); + screen_cmd(mpd, cmd); if( cmd==CMD_VOLUME_UP || cmd==CMD_VOLUME_DOWN) /* make shure we dont update the volume yet */ g_timer_start(timer); } else - screen_idle(mpc); + screen_idle(mpd); } else if( options->reconnect ) { - if( get_keyboard_command_with_timeout(MPD_RECONNECT_TIME)==CMD_QUIT) - exit(EXIT_SUCCESS); screen_status_printf(_("Connecting to %s... [Press %s to abort]"), options->host, get_key_names(CMD_QUIT,0) ); - if( mpc_reconnect(mpc, - options->host, - options->port, - options->password) == 0 ) + doupdate(); + + if( get_keyboard_command_with_timeout(MPD_RECONNECT_TIME)==CMD_QUIT) + exit(EXIT_SUCCESS); + + if( mpdclient_connect(mpd, + options->host, + options->port, + 1.0, + options->password) == 0 ) { screen_status_printf(_("Connected to %s!"), options->host); + doupdate(); connected = TRUE; - } - doupdate(); + } } t = g_timer_elapsed(timer, NULL); } - exit(EXIT_FAILURE); } |