Code

ncmpc.git
7 years agorelease v0.27 v0.27
Max Kellermann [Sat, 25 Mar 2017 20:35:42 +0000 (21:35 +0100)]
release v0.27

7 years agoaconnect: remove redundant #include, fixes windows build
Max Kellermann [Sat, 25 Mar 2017 20:35:09 +0000 (21:35 +0100)]
aconnect: remove redundant #include, fixes windows build

7 years agonet/async_connect: add missing include for socklen_t
Max Kellermann [Sat, 25 Mar 2017 20:34:03 +0000 (21:34 +0100)]
net/async_connect: add missing include for socklen_t

7 years agowreadln: fix #ifdef for WIN32
Max Kellermann [Sat, 25 Mar 2017 20:32:43 +0000 (21:32 +0100)]
wreadln: fix #ifdef for WIN32

7 years agompdclient: try IP connect if default local socket path fails
Max Kellermann [Sat, 25 Mar 2017 19:09:57 +0000 (20:09 +0100)]
mpdclient: try IP connect if default local socket path fails

This is what libmpdclient does internally, and when ncmpc copied some
code from libmpdclient, it did not replicate this implementation
detail.

 https://bugs.musicpd.org/view.php?id=4672

7 years agompdclient: move aconnect_start() call to a separate function
Max Kellermann [Sat, 25 Mar 2017 19:53:35 +0000 (20:53 +0100)]
mpdclient: move aconnect_start() call to a separate function

7 years agomain: move default_settings_name() to mpdclient.c
Max Kellermann [Sat, 25 Mar 2017 19:37:13 +0000 (20:37 +0100)]
main: move default_settings_name() to mpdclient.c

7 years agoaconnect: assign variable first, then start connect
Max Kellermann [Sat, 25 Mar 2017 19:20:30 +0000 (20:20 +0100)]
aconnect: assign variable first, then start connect

Fixes bogus assertion failure.

7 years agoutils: move format_duration_*() to time_format.c
Max Kellermann [Tue, 21 Mar 2017 21:41:58 +0000 (22:41 +0100)]
utils: move format_duration_*() to time_format.c

7 years agodb_completion: use g_strconcat()
Max Kellermann [Tue, 21 Mar 2017 21:36:27 +0000 (22:36 +0100)]
db_completion: use g_strconcat()

7 years agoutils: move gcmp_list_from_path() to db_completion.c
Max Kellermann [Tue, 21 Mar 2017 21:29:59 +0000 (22:29 +0100)]
utils: move gcmp_list_from_path() to db_completion.c

7 years agowreadln: call g_list_length() only once
Max Kellermann [Tue, 21 Mar 2017 21:28:14 +0000 (22:28 +0100)]
wreadln: call g_list_length() only once

7 years agocolors, utils: use g_list_free_full(g_free)
Max Kellermann [Tue, 21 Mar 2017 21:05:10 +0000 (22:05 +0100)]
colors, utils: use g_list_free_full(g_free)

7 years agocolors: return bool instead of int
Max Kellermann [Tue, 21 Mar 2017 20:42:27 +0000 (21:42 +0100)]
colors: return bool instead of int

7 years agocolors: colors_update_pair(), colors_start() and colors_use() return void
Max Kellermann [Tue, 21 Mar 2017 20:42:52 +0000 (21:42 +0100)]
colors: colors_update_pair(), colors_start() and colors_use() return void

7 years agolist_window: convert comments to doxygen
Max Kellermann [Tue, 21 Mar 2017 20:13:47 +0000 (21:13 +0100)]
list_window: convert comments to doxygen

7 years agosave_playlist: move NULL check up
Max Kellermann [Mon, 20 Mar 2017 21:00:20 +0000 (22:00 +0100)]
save_playlist: move NULL check up

7 years agoscreen_queue: move playlist_save() to save_playlist.c
Max Kellermann [Mon, 20 Mar 2017 20:45:50 +0000 (21:45 +0100)]
screen_queue: move playlist_save() to save_playlist.c

7 years agopo: update ncmpc.pot
Max Kellermann [Mon, 20 Mar 2017 20:12:11 +0000 (21:12 +0100)]
po: update ncmpc.pot

7 years agoscreen_utils: automatically append "[y/n]"
Max Kellermann [Mon, 20 Mar 2017 20:09:39 +0000 (21:09 +0100)]
screen_utils: automatically append "[y/n]"

7 years agopo: update ncmpc.pot
Max Kellermann [Mon, 20 Mar 2017 20:04:59 +0000 (21:04 +0100)]
po: update ncmpc.pot

7 years agopo/POTFILES.in: add new source files
Max Kellermann [Mon, 20 Mar 2017 20:03:31 +0000 (21:03 +0100)]
po/POTFILES.in: add new source files

7 years agopo/POTFILES.in: sort
Max Kellermann [Mon, 20 Mar 2017 20:02:38 +0000 (21:02 +0100)]
po/POTFILES.in: sort

7 years agocolors: simplify i18n strings
Max Kellermann [Mon, 20 Mar 2017 20:00:58 +0000 (21:00 +0100)]
colors: simplify i18n strings

7 years agoscreen: move code to screen_init.c
Max Kellermann [Mon, 20 Mar 2017 19:51:40 +0000 (20:51 +0100)]
screen: move code to screen_init.c

7 years agoscreen: move screen_paint() to screen_paint.c
Max Kellermann [Mon, 20 Mar 2017 19:37:33 +0000 (20:37 +0100)]
screen: move screen_paint() to screen_paint.c

7 years agoscreen: move mode_fn into struct screen
Max Kellermann [Mon, 20 Mar 2017 19:46:42 +0000 (20:46 +0100)]
screen: move mode_fn into struct screen

7 years agoscreen: make cols and rows local
Max Kellermann [Mon, 20 Mar 2017 19:41:37 +0000 (20:41 +0100)]
screen: make cols and rows local

7 years agoscreen: rename screen_refresh() to screen_paint()
Max Kellermann [Mon, 20 Mar 2017 19:35:59 +0000 (20:35 +0100)]
screen: rename screen_refresh() to screen_paint()

7 years agoscreen: move code to paint_top_window()
Max Kellermann [Mon, 20 Mar 2017 19:34:27 +0000 (20:34 +0100)]
screen: move code to paint_top_window()

7 years agoplugin: use g_idle_add() instead of g_timeout_add(0)
Max Kellermann [Mon, 20 Mar 2017 19:27:22 +0000 (20:27 +0100)]
plugin: use g_idle_add() instead of g_timeout_add(0)

7 years agouse g_timeout_add_seconds() where appropriate
Max Kellermann [Mon, 20 Mar 2017 19:26:42 +0000 (20:26 +0100)]
use g_timeout_add_seconds() where appropriate

7 years agokeyboard: no begin/end_input_event() on unknown key codes
Max Kellermann [Mon, 20 Mar 2017 19:02:01 +0000 (20:02 +0100)]
keyboard: no begin/end_input_event() on unknown key codes

7 years agokeyboard: move code to ignore_key()
Max Kellermann [Mon, 20 Mar 2017 19:00:09 +0000 (20:00 +0100)]
keyboard: move code to ignore_key()

7 years agoscreen_interface: make cols/rows unsigned
Max Kellermann [Mon, 20 Mar 2017 16:35:59 +0000 (17:35 +0100)]
screen_interface: make cols/rows unsigned

7 years agoscreen_utils: move KEY_MOUSE check to ignore_key(), avoid recursion
Max Kellermann [Mon, 20 Mar 2017 16:17:36 +0000 (17:17 +0100)]
screen_utils: move KEY_MOUSE check to ignore_key(), avoid recursion

7 years agoscreen_utils: move check to ignore_key()
Max Kellermann [Mon, 20 Mar 2017 16:16:35 +0000 (17:16 +0100)]
screen_utils: move check to ignore_key()

7 years agoxterm_title: use getenv() instead of g_getenv()
Max Kellermann [Mon, 20 Mar 2017 16:07:43 +0000 (17:07 +0100)]
xterm_title: use getenv() instead of g_getenv()

7 years agoxterm_title: simplify if/else chains
Max Kellermann [Mon, 20 Mar 2017 16:06:47 +0000 (17:06 +0100)]
xterm_title: simplify if/else chains

7 years agomain: improve strfsong() error check
Max Kellermann [Mon, 20 Mar 2017 16:06:02 +0000 (17:06 +0100)]
main: improve strfsong() error check

7 years agomain: check for strfsong() failure, add fallback
Max Kellermann [Mon, 20 Mar 2017 16:04:21 +0000 (17:04 +0100)]
main: check for strfsong() failure, add fallback

7 years agoxterm_title: pass string, no format
Max Kellermann [Mon, 20 Mar 2017 16:02:00 +0000 (17:02 +0100)]
xterm_title: pass string, no format

7 years agoscreen_utils: move set_xterm_title() to xterm_title.c
Max Kellermann [Mon, 20 Mar 2017 15:59:50 +0000 (16:59 +0100)]
screen_utils: move set_xterm_title() to xterm_title.c

7 years agostatus_bar: remove the status bar clock (option "display-time")
Max Kellermann [Mon, 20 Mar 2017 15:47:59 +0000 (16:47 +0100)]
status_bar: remove the status bar clock (option "display-time")

This is a pretty useless feature which is only available when not
playing something - a state in which ncmpc isn't useful either.  What
the clock does is require a timer which wakes up ncmpc every second,
when it should better be completely idle (and swapped out).

7 years agomain: no delay for initial collect
Max Kellermann [Mon, 20 Mar 2017 15:41:58 +0000 (16:41 +0100)]
main: no delay for initial collect

7 years agoscreen: remove redundant #ifndef
Max Kellermann [Mon, 20 Mar 2017 15:39:53 +0000 (16:39 +0100)]
screen: remove redundant #ifndef

7 years agoscreen: remove unnecessary paint calls from screen_resize()
Max Kellermann [Mon, 20 Mar 2017 15:37:45 +0000 (16:37 +0100)]
screen: remove unnecessary paint calls from screen_resize()

This will be done again by the following screen_paint() call.

7 years agoscreen: remove unnecessary paint calls from screen_init()
Max Kellermann [Mon, 20 Mar 2017 15:35:07 +0000 (16:35 +0100)]
screen: remove unnecessary paint calls from screen_init()

This will be painted right before entering the main loop.

7 years agoincrement version number to 0.27
Max Kellermann [Mon, 20 Mar 2017 15:24:36 +0000 (16:24 +0100)]
increment version number to 0.27

7 years agorelease v0.26 v0.26
Max Kellermann [Mon, 20 Mar 2017 12:45:01 +0000 (13:45 +0100)]
release v0.26

7 years agopo: update ncmpc.pot
Max Kellermann [Mon, 20 Mar 2017 12:44:46 +0000 (13:44 +0100)]
po: update ncmpc.pot

7 years agoscreen_song: don't translate printf formats
Max Kellermann [Mon, 20 Mar 2017 12:43:09 +0000 (13:43 +0100)]
screen_song: don't translate printf formats

7 years agoMakefile.am: use CURSES_LIBS instead of CURSES_LIB
Max Kellermann [Mon, 20 Mar 2017 12:41:07 +0000 (13:41 +0100)]
Makefile.am: use CURSES_LIBS instead of CURSES_LIB

7 years agoscreen_*: eliminate redundant wrefresh() calls
Max Kellermann [Mon, 20 Mar 2017 12:08:01 +0000 (13:08 +0100)]
screen_*: eliminate redundant wrefresh() calls

This is already called by screen_refresh().

7 years agoscreen: merge duplicate code from screen_paint() and screen_update()
Max Kellermann [Mon, 20 Mar 2017 11:53:39 +0000 (12:53 +0100)]
screen: merge duplicate code from screen_paint() and screen_update()

7 years agoscreen_browser: include cleanup
Max Kellermann [Mon, 20 Mar 2017 11:40:46 +0000 (12:40 +0100)]
screen_browser: include cleanup

7 years agoscreen: remove unnecessary doupdate() call from screen_init()
Max Kellermann [Mon, 20 Mar 2017 11:34:00 +0000 (12:34 +0100)]
screen: remove unnecessary doupdate() call from screen_init()

main() will call screen_paint() before entering the main loop, so this
saves a few bytes of stdout transfer.

7 years agoscreen_utils: remove redundant doupdate() call
Max Kellermann [Mon, 20 Mar 2017 11:30:54 +0000 (12:30 +0100)]
screen_utils: remove redundant doupdate() call

wrefresh() implies doupdate().

7 years agokeyboard: call wgetch() on main window
Max Kellermann [Mon, 20 Mar 2017 10:28:21 +0000 (11:28 +0100)]
keyboard: call wgetch() on main window

This erases all the windows, and requires them to repaint.  Strangely,
ncurses does this only in color mode.  Anyway, this greatly reduces
the amount of data transferred to stdout, and fixes the flickering
problems.

7 years agokeyboard: implement keyboard_unread() without ungetch()
Max Kellermann [Mon, 20 Mar 2017 11:19:29 +0000 (12:19 +0100)]
keyboard: implement keyboard_unread() without ungetch()

7 years agokeyboard: move code to translate_key()
Max Kellermann [Mon, 20 Mar 2017 11:18:48 +0000 (12:18 +0100)]
keyboard: move code to translate_key()

7 years agokeyboard: add keyboard_unread()
Max Kellermann [Mon, 20 Mar 2017 11:14:54 +0000 (12:14 +0100)]
keyboard: add keyboard_unread()

7 years agocommand: move get_keyboard_command() to keyboard.c
Max Kellermann [Mon, 20 Mar 2017 11:02:33 +0000 (12:02 +0100)]
command: move get_keyboard_command() to keyboard.c

7 years agocommand: remove "pure" attribute from get_keyboard_command()
Max Kellermann [Mon, 20 Mar 2017 11:04:44 +0000 (12:04 +0100)]
command: remove "pure" attribute from get_keyboard_command()

7 years agocommand: include cleanup
Max Kellermann [Mon, 20 Mar 2017 10:51:19 +0000 (11:51 +0100)]
command: include cleanup

7 years agoconfigure.ac: repair the getmouse() check
Max Kellermann [Mon, 20 Mar 2017 09:51:25 +0000 (10:51 +0100)]
configure.ac: repair the getmouse() check

Was broken by commit b73fd31ce0dc27d8

7 years agompdclient: connect to MPD asynchronously
Max Kellermann [Fri, 17 Mar 2017 14:53:09 +0000 (15:53 +0100)]
mpdclient: connect to MPD asynchronously

This way, the user can really cancel the connection attempt at any
time, and does not need to wait for a timeout.

This duplicates some code from libmpdclient, but unfortunately
libmpdclient doesn't expose a usable API for connecting asynchronously
yet.

7 years agompdclient: move code to mpdclient_connected()
Max Kellermann [Sun, 19 Mar 2017 12:57:46 +0000 (13:57 +0100)]
mpdclient: move code to mpdclient_connected()

7 years agoconfigure.ac: remove redundant variable assignments
Max Kellermann [Sun, 19 Mar 2017 12:50:28 +0000 (13:50 +0100)]
configure.ac: remove redundant variable assignments

These are implied by autoconf.

7 years agompdclient: eliminate redundant mpd_status_get_volume() calls
Max Kellermann [Sun, 19 Mar 2017 12:10:43 +0000 (13:10 +0100)]
mpdclient: eliminate redundant mpd_status_get_volume() calls

Return early from mpdclient_cmd_volume_*(), without calling
mpdclient_get_connection(), if we already know the operation would
have no effect.

7 years agomain: remove check_reconnect()
Max Kellermann [Sun, 19 Mar 2017 11:49:42 +0000 (12:49 +0100)]
main: remove check_reconnect()

Assume that mpdclient_lost_callback() is everything we need to
implement.

7 years agompdclient: call mpdclient_lost_callback() after failed error recovery
Max Kellermann [Sun, 19 Mar 2017 11:47:53 +0000 (12:47 +0100)]
mpdclient: call mpdclient_lost_callback() after failed error recovery

7 years agompdclient: no mpdclient_handle_error() after connect failure
Max Kellermann [Sun, 19 Mar 2017 12:02:11 +0000 (13:02 +0100)]
mpdclient: no mpdclient_handle_error() after connect failure

Invoke the error callback, but don't attempt to recover.

7 years agompdclient: automatically re-enter idle mode, eliminate mpdclient_put_connection()
Max Kellermann [Sun, 19 Mar 2017 11:20:23 +0000 (12:20 +0100)]
mpdclient: automatically re-enter idle mode, eliminate mpdclient_put_connection()

7 years agomain: remove redundant mpdclient_disconnect() call
Max Kellermann [Sun, 19 Mar 2017 11:04:16 +0000 (12:04 +0100)]
main: remove redundant mpdclient_disconnect() call

7 years agompdclient: pass host, port etc. to constructor
Max Kellermann [Sun, 19 Mar 2017 10:55:54 +0000 (11:55 +0100)]
mpdclient: pass host, port etc. to constructor

7 years agomain: move signal handlers to signals.c
Max Kellermann [Sun, 19 Mar 2017 10:18:16 +0000 (11:18 +0100)]
main: move signal handlers to signals.c

7 years agomain: use g_unix_signal_add() for SIGTERM, SIGINT and SIGHUP
Max Kellermann [Sun, 19 Mar 2017 10:41:00 +0000 (11:41 +0100)]
main: use g_unix_signal_add() for SIGTERM, SIGINT and SIGHUP

Unfortunately, GLib doesn't support SIGWINCH and SIGCONT, for whatever
reasons.

7 years agoconfigure.ac: require GLib 2.30 (for signal handlers)
Max Kellermann [Sun, 19 Mar 2017 10:31:53 +0000 (11:31 +0100)]
configure.ac: require GLib 2.30 (for signal handlers)

7 years agomain: merge catch_sigcont() and catch_sigwinch()
Max Kellermann [Sun, 19 Mar 2017 10:28:39 +0000 (11:28 +0100)]
main: merge catch_sigcont() and catch_sigwinch()

7 years agom4/ax_with_curses.m4: update from upstream
Max Kellermann [Sun, 19 Mar 2017 10:25:42 +0000 (11:25 +0100)]
m4/ax_with_curses.m4: update from upstream

7 years agom4/ax_append_*_flags.m4: update from upstream
Max Kellermann [Sun, 19 Mar 2017 10:24:08 +0000 (11:24 +0100)]
m4/ax_append_*_flags.m4: update from upstream

7 years agomain: remove unused function sigstop()
Max Kellermann [Sun, 19 Mar 2017 10:20:39 +0000 (11:20 +0100)]
main: remove unused function sigstop()

7 years agoplugin: call g_io_channel_unref() early, eliminate "channel" attribute
Max Kellermann [Sun, 19 Mar 2017 10:09:44 +0000 (11:09 +0100)]
plugin: call g_io_channel_unref() early, eliminate "channel" attribute

7 years agoplugin: add plugin_pipe.cycle pointer
Max Kellermann [Sun, 19 Mar 2017 10:11:13 +0000 (11:11 +0100)]
plugin: add plugin_pipe.cycle pointer

Replaces the fragile if/else in plugin_data().

7 years agomain: do_input_event() returns bool
Max Kellermann [Sun, 19 Mar 2017 10:04:08 +0000 (11:04 +0100)]
main: do_input_event() returns bool

7 years agomain: move keyboard_event() to keyboard.c
Max Kellermann [Sun, 19 Mar 2017 09:59:16 +0000 (10:59 +0100)]
main: move keyboard_event() to keyboard.c

7 years agomain: eliminate another local dummy variable
Max Kellermann [Sun, 19 Mar 2017 09:56:40 +0000 (10:56 +0100)]
main: eliminate another local dummy variable

7 years agomain: move "#ifdef ENABLE_LIRC" to lirc.h"
Max Kellermann [Sun, 19 Mar 2017 09:53:49 +0000 (10:53 +0100)]
main: move "#ifdef ENABLE_LIRC" to lirc.h"

7 years agolirc: rename public functions
Max Kellermann [Sun, 19 Mar 2017 09:52:42 +0000 (10:52 +0100)]
lirc: rename public functions

7 years agomain: move LIRC GIOChannel setup to lirc.c
Max Kellermann [Sun, 19 Mar 2017 09:50:09 +0000 (10:50 +0100)]
main: move LIRC GIOChannel setup to lirc.c

7 years agomain: call g_io_channel_unref() early
Max Kellermann [Sun, 19 Mar 2017 09:45:18 +0000 (10:45 +0100)]
main: call g_io_channel_unref() early

Release the reference right after registering the channel in the event
loop.  We don't need the reference, and the main loop has its own
reference.

7 years agomain: merge exit_and_cleanup() into main()
Max Kellermann [Sun, 19 Mar 2017 09:42:00 +0000 (10:42 +0100)]
main: merge exit_and_cleanup() into main()

There's no point in having this function that is called only once.

7 years agompdclient: convert port to "unsigned"
Max Kellermann [Fri, 17 Mar 2017 22:45:35 +0000 (23:45 +0100)]
mpdclient: convert port to "unsigned"

7 years agompdclient: remove unnecessary NULL check
Max Kellermann [Fri, 17 Mar 2017 22:38:58 +0000 (23:38 +0100)]
mpdclient: remove unnecessary NULL check

7 years agocallbacks: add "connected" and "failed" callback
Max Kellermann [Fri, 17 Mar 2017 22:33:49 +0000 (23:33 +0100)]
callbacks: add "connected" and "failed" callback

More preparations for asynchronous connect.

7 years agompdclient: add _is_dead()
Max Kellermann [Fri, 17 Mar 2017 22:15:56 +0000 (23:15 +0100)]
mpdclient: add _is_dead()

Prepare for asynchronous connect.

7 years agompdclient: add "playing" attribute
Max Kellermann [Fri, 17 Mar 2017 22:24:27 +0000 (23:24 +0100)]
mpdclient: add "playing" attribute

Cache the mpd_status_get_state()==MPD_STATE_PLAY value which is used
pretty often.

7 years agomain: remove unnecessary "mpd!=NULL" checks
Max Kellermann [Fri, 17 Mar 2017 22:27:12 +0000 (23:27 +0100)]
main: remove unnecessary "mpd!=NULL" checks

7 years agompdclient: reorder attributes for better packing
Max Kellermann [Fri, 17 Mar 2017 22:24:03 +0000 (23:24 +0100)]
mpdclient: reorder attributes for better packing