utils: move gcmp_list_from_path() to db_completion.c
wreadln: call g_list_length() only once
colors, utils: use g_list_free_full(g_free)
colors: return bool instead of int
colors: colors_update_pair(), colors_start() and colors_use() return void
list_window: convert comments to doxygen
save_playlist: move NULL check up
screen_queue: move playlist_save() to save_playlist.c
po: update ncmpc.pot
screen_utils: automatically append "[y/n]"
po: update ncmpc.pot
po/POTFILES.in: add new source files
po/POTFILES.in: sort
colors: simplify i18n strings
screen: move code to screen_init.c
screen: move screen_paint() to screen_paint.c
screen: move mode_fn into struct screen
screen: make cols and rows local
screen: rename screen_refresh() to screen_paint()
screen: move code to paint_top_window()
plugin: use g_idle_add() instead of g_timeout_add(0)
use g_timeout_add_seconds() where appropriate
keyboard: no begin/end_input_event() on unknown key codes
keyboard: move code to ignore_key()
screen_interface: make cols/rows unsigned
screen_utils: move KEY_MOUSE check to ignore_key(), avoid recursion
screen_utils: move check to ignore_key()
xterm_title: use getenv() instead of g_getenv()
xterm_title: simplify if/else chains
main: improve strfsong() error check
main: check for strfsong() failure, add fallback
xterm_title: pass string, no format
screen_utils: move set_xterm_title() to xterm_title.c
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).
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).
main: no delay for initial collect
screen: remove redundant #ifndef
screen: remove unnecessary paint calls from screen_resize()
This will be done again by the following screen_paint() call.
This will be done again by the following screen_paint() call.
screen: remove unnecessary paint calls from screen_init()
This will be painted right before entering the main loop.
This will be painted right before entering the main loop.
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()