increment version number to 0.27
release v0.26
po: update ncmpc.pot
screen_song: don't translate printf formats
Makefile.am: use CURSES_LIBS instead of CURSES_LIB
screen_*: eliminate redundant wrefresh() calls
This is already called by screen_refresh().
This is already called by screen_refresh().
screen: merge duplicate code from screen_paint() and screen_update()
screen_browser: include cleanup
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.
main() will call screen_paint() before entering the main loop, so this
saves a few bytes of stdout transfer.
screen_utils: remove redundant doupdate() call
wrefresh() implies doupdate().
wrefresh() implies doupdate().
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.
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.
keyboard: implement keyboard_unread() without ungetch()
keyboard: move code to translate_key()
keyboard: add keyboard_unread()
command: move get_keyboard_command() to keyboard.c
command: remove "pure" attribute from get_keyboard_command()
command: include cleanup
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.
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.
mpdclient: move code to mpdclient_connected()
configure.ac: remove redundant variable assignments
These are implied by autoconf.
These are implied by autoconf.
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.
Return early from mpdclient_cmd_volume_*(), without calling
mpdclient_get_connection(), if we already know the operation would
have no effect.
main: remove check_reconnect()
Assume that mpdclient_lost_callback() is everything we need to
implement.
Assume that mpdclient_lost_callback() is everything we need to
implement.
mpdclient: call mpdclient_lost_callback() after failed error recovery
mpdclient: no mpdclient_handle_error() after connect failure
Invoke the error callback, but don't attempt to recover.
Invoke the error callback, but don't attempt to recover.
mpdclient: automatically re-enter idle mode, eliminate mpdclient_put_connection()
main: remove redundant mpdclient_disconnect() call
mpdclient: pass host, port etc. to constructor
main: move signal handlers to signals.c
main: use g_unix_signal_add() for SIGTERM, SIGINT and SIGHUP
Unfortunately, GLib doesn't support SIGWINCH and SIGCONT, for whatever
reasons.
Unfortunately, GLib doesn't support SIGWINCH and SIGCONT, for whatever
reasons.
configure.ac: require GLib 2.30 (for signal handlers)
main: merge catch_sigcont() and catch_sigwinch()
m4/ax_with_curses.m4: update from upstream
m4/ax_append_*_flags.m4: update from upstream
main: remove unused function sigstop()
plugin: call g_io_channel_unref() early, eliminate "channel" attribute
plugin: add plugin_pipe.cycle pointer
Replaces the fragile if/else in plugin_data().
Replaces the fragile if/else in plugin_data().
main: do_input_event() returns bool
main: move keyboard_event() to keyboard.c
main: eliminate another local dummy variable
main: move "#ifdef ENABLE_LIRC" to lirc.h"
lirc: rename public functions
main: move LIRC GIOChannel setup to lirc.c
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.
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.
main: merge exit_and_cleanup() into main()
There's no point in having this function that is called only once.
There's no point in having this function that is called only once.
mpdclient: convert port to "unsigned"
mpdclient: remove unnecessary NULL check
callbacks: add "connected" and "failed" callback
More preparations for asynchronous connect.
More preparations for asynchronous connect.
mpdclient: add _is_dead()
Prepare for asynchronous connect.
Prepare for asynchronous connect.
mpdclient: add "playing" attribute
Cache the mpd_status_get_state()==MPD_STATE_PLAY value which is used
pretty often.
Cache the mpd_status_get_state()==MPD_STATE_PLAY value which is used
pretty often.
main: remove unnecessary "mpd!=NULL" checks
mpdclient: reorder attributes for better packing
mpdclient: move volume reset to _status_free()
Make sure that volume gets reset whenever status==NULL, also in
mpdclient_disconnect().
Make sure that volume gets reset whenever status==NULL, also in
mpdclient_disconnect().
mpdclient: move code to mpdclient_status_free()
mpdclient: remove unused attribute "update_id"
mpdclient: update the "source" documentation
mpdclient: wrap the idle callback, unified error handling
mpdclient: convert UTF-8 error message to locale charset
Provide a consistent, documented API.
Provide a consistent, documented API.
mpdclient: move code to mpdclient_invoke_error_callback()
mpdclient: include cleanup
mpdclient: remove unused macro BUFSIZE
mpdclient: remove unused function compare_filelistentry_format()
main: move mpd_glib_new() call to mpdclient.c
callbacks: rename functions
screen_client: move functions to callbacks.c
main: remove redundant mpdclient_disconnect() call
mpdclient_free() will do this implicitly.
mpdclient_free() will do this implicitly.
main: remove the "idle" fallback code
ncmpc has been requiring MPD 0.14+ for 7 years (commit e25d7523), and
we really don't need the timer fallback. "idle" just has to be
supported.
ncmpc has been requiring MPD 0.14+ for 7 years (commit e25d7523), and
we really don't need the timer fallback. "idle" just has to be
supported.
configure.ac: remove redundant libmpdclient version test
Obsoleted by 323d2239df7d8b6a3b8005f14c7e90b5271a77e9
Obsoleted by 323d2239df7d8b6a3b8005f14c7e90b5271a77e9
Makefile.am: merge ncmpc_headers into src_ncmpc_SOURCES
update copyright year
main: eliminate local dummy variable
command: fix swapped help texts
screen_song: show "dsd64" etc. shortcuts
screen_song: show "f" and "dsd" formats
screen_song: move code to audio_format_to_string()
screen_{find,search}: work around gcc7 -Wimplicit-fallthrough
Compiler.h: exclude clang from GCC_CHECK_VERSION()
Compiler.h: reimplement GCC_CHECK_VERSION() using GCC_MAKE_VERSION()
Compiler.h: add macro CLANG_OR_GCC_VERSION()
Compiler.h: add macro GCC_OLDER_THAN()
Compiler.h: add macro CLANG_VERSION
Compiler.h: add macro GCC_MAKE_VERSION()
require libmpdclient 2.9, remove several #ifdefs
lyrics: lyrics area regex fix for LyricWikia
configure.ac: detect lirc 0.9.4
configure.ac: prepare for 0.26
release v0.25
strfsong: implement "%disc%"
https://bugs.musicpd.org/view.php?id=4479
https://bugs.musicpd.org/view.php?id=4479
m4/pkg.m4: update from pkg-config 0.29
m4/{nls,po,progtest}.m4: update from gettest 0.19.8.1
m4/glib-gettext.m4: update from GLib 2.48.1
Fixes "error: m4_copy: won't overwrite defined macro: glib_DEFUN".
Fixes "error: m4_copy: won't overwrite defined macro: glib_DEFUN".
lyrics: no extra XML tags in lyricbox anymore
lyrics: use open-uri to handle HTTP 301 redirection
lyrics: fixed XML tag removal on wikia.com
configure.ac: prepare for 0.25
release v0.24
m4: import ax_require_defined.m4 from autoconf-archive
screen_song: draw bit rate in screen_song_update()
Drawing the bit rate in screen_song_add_song() requires some redundant
checks.
Drawing the bit rate in screen_song_add_song() requires some redundant
checks.
main: make variables more local