X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fmain.c;h=eccb5a004c8a114f98966270447278dcbdbf439d;hb=63fc23f1c83f52eb47b5511e97bb1fe7cf7d82d5;hp=5b906c513173385869779869c19f07f2b02784f9;hpb=214eea183d291601a1a36f9feed9bc7f1ef031de;p=ncmpc.git diff --git a/src/main.c b/src/main.c index 5b906c5..eccb5a0 100644 --- a/src/main.c +++ b/src/main.c @@ -26,8 +26,8 @@ #include "command.h" #include "ncu.h" #include "screen.h" -#include "screen_utils.h" #include "screen_status.h" +#include "xterm_title.h" #include "strfsong.h" #include "i18n.h" #include "player_command.h" @@ -75,15 +75,19 @@ update_xterm_title(void) const struct mpd_song *song = mpd->song; char tmp[BUFSIZE]; + const char *new_title = NULL; if (options.xterm_title_format && mpd->playing && song) - strfsong(tmp, BUFSIZE, options.xterm_title_format, song); - else - g_strlcpy(tmp, PACKAGE " version " VERSION, BUFSIZE); + new_title = strfsong(tmp, BUFSIZE, options.xterm_title_format, song) > 0 + ? tmp + : NULL; + + if (new_title == NULL) + new_title = PACKAGE " version " VERSION; static char title[BUFSIZE]; - if (strncmp(title, tmp, BUFSIZE)) { - g_strlcpy(title, tmp, BUFSIZE); - set_xterm_title("%s", title); + if (strncmp(title, new_title, BUFSIZE)) { + g_strlcpy(title, new_title, BUFSIZE); + set_xterm_title(title); } } #endif @@ -114,11 +118,7 @@ disable_update_timer(void) static bool should_enable_update_timer(void) { - return mpd->playing -#ifndef NCMPC_MINI - || options.display_time -#endif - ; + return mpd->playing; } static void @@ -146,38 +146,6 @@ do_mpd_update(void) mpd->events = 0; } -static char * -settings_name(const struct mpd_settings *settings) -{ - const char *host = mpd_settings_get_host(settings); - if (host == NULL) - host = _("unknown"); - - if (host[0] == '/') - return g_strdup(host); - - unsigned port = mpd_settings_get_port(settings); - if (port == 0 || port == 6600) - return g_strdup(host); - - return g_strdup_printf("%s:%u", host, port); -} - -static char * -default_settings_name(void) -{ - struct mpd_settings *settings = - mpd_settings_new(options.host, options.port, 0, - NULL, options.password); - if (settings == NULL) - return g_strdup(_("unknown")); - - char *name = settings_name(settings); - mpd_settings_free(settings); - - return name; -} - /** * This timer is installed when the connection to the MPD server is * broken. It tries to recover by reconnecting periodically. @@ -189,7 +157,7 @@ timer_reconnect(gcc_unused gpointer data) reconnect_source_id = 0; - char *name = default_settings_name(); + char *name = mpdclient_settings_name(mpd); screen_status_printf(_("Connecting to %s... [Press %s to abort]"), name, get_key_names(CMD_QUIT, false)); g_free(name); @@ -218,8 +186,8 @@ mpdclient_connected_callback(void) doupdate(); /* try again after 30 seconds */ - reconnect_source_id = g_timeout_add(30000, - timer_reconnect, NULL); + reconnect_source_id = + g_timeout_add_seconds(30, timer_reconnect, NULL); return; } #endif @@ -241,8 +209,7 @@ mpdclient_failed_callback(void) assert(reconnect_source_id == 0); /* try again in 5 seconds */ - reconnect_source_id = g_timeout_add(5000, - timer_reconnect, NULL); + reconnect_source_id = g_timeout_add_seconds(5, timer_reconnect, NULL); } void @@ -252,7 +219,7 @@ mpdclient_lost_callback(void) screen_update(mpd); - reconnect_source_id = g_timeout_add(1000, timer_reconnect, NULL); + reconnect_source_id = g_timeout_add_seconds(1, timer_reconnect, NULL); } /** @@ -313,6 +280,16 @@ do_input_event(command_t cmd) return true; } +#ifdef HAVE_GETMOUSE + +void +do_mouse_event(int x, int y, mmask_t bstate) +{ + screen_mouse(mpd, x, y, bstate); +} + +#endif + #ifndef NCMPC_MINI /** * Check the configured key bindings for errors, and display a status @@ -422,15 +399,16 @@ main(int argc, const char *argv[]) signals_init(main_loop, mpd); /* attempt to connect */ - reconnect_source_id = g_timeout_add(1, timer_reconnect, NULL); + reconnect_source_id = g_idle_add(timer_reconnect, NULL); auto_update_timer(); #ifndef NCMPC_MINI - check_key_bindings_source_id = g_timeout_add(10000, timer_check_key_bindings, NULL); + check_key_bindings_source_id = + g_timeout_add_seconds(10, timer_check_key_bindings, NULL); #endif - screen_paint(mpd); + screen_paint(mpd, true); g_main_loop_run(main_loop); g_main_loop_unref(main_loop);