Code

ncmpc.git
15 years agomain: update within timer_reconnect()
Max Kellermann [Sat, 3 Oct 2009 23:10:28 +0000 (01:10 +0200)]
main: update within timer_reconnect()

Don't schedule the timer_mpd_update() call.  Always return "true" from
timer_mpd_update().

This sets the full event mask after a connection was established.  The
"database updated" message appears only if the connection existed
before.

15 years agomain: check for connection lost in end_input_event()
Max Kellermann [Sat, 3 Oct 2009 23:10:26 +0000 (01:10 +0200)]
main: check for connection lost in end_input_event()

Every GLib event callback which may affect the connection should
detect a lost connection.

15 years agomain: reconnect at the end of timer_mpd_update()
Max Kellermann [Sat, 3 Oct 2009 23:10:23 +0000 (01:10 +0200)]
main: reconnect at the end of timer_mpd_update()

During timer_mpd_update(), the MPD connection may get lost.  Move that
reconnect test to the end of timer_mpd_update(), so we can catch it as
soon as possible.  There is no advantage in having it at the
beginning.

15 years agostatus_bar: fixed visible_bitrate check
Max Kellermann [Sat, 3 Oct 2009 23:09:56 +0000 (01:09 +0200)]
status_bar: fixed visible_bitrate check

Don't render the bit rate if total_time is unknown, and the
visible_bitrate is disabled.

15 years agomain: clear mpdclient.events in end_input_event()
Max Kellermann [Sat, 3 Oct 2009 21:58:10 +0000 (23:58 +0200)]
main: clear mpdclient.events in end_input_event()

The events bit mask should be cleared after every screen_update()
call.

15 years agomain: assign reconnect_source_id when retrying to reconnect
Max Kellermann [Sat, 3 Oct 2009 21:22:57 +0000 (23:22 +0200)]
main: assign reconnect_source_id when retrying to reconnect

Keep track of the current source id, and unregister it on exit.

15 years agoscreen_play, status_bar: update scrolling with a GLib timer
Max Kellermann [Sat, 3 Oct 2009 20:05:09 +0000 (22:05 +0200)]
screen_play, status_bar: update scrolling with a GLib timer

15 years agostatus_bar: moved hscroll object to struct status_bar
Max Kellermann [Sat, 3 Oct 2009 20:04:54 +0000 (22:04 +0200)]
status_bar: moved hscroll object to struct status_bar

15 years agoscreen: don't use/define "welcome" stuff in --enable-mini
Max Kellermann [Sat, 3 Oct 2009 20:04:32 +0000 (22:04 +0200)]
screen: don't use/define "welcome" stuff in --enable-mini

15 years agoscreen_play: make the scroll_stat variable global
Max Kellermann [Sat, 3 Oct 2009 19:45:38 +0000 (21:45 +0200)]
screen_play: make the scroll_stat variable global

15 years agohscroll: wrap attribute access added helper functions
Max Kellermann [Sat, 3 Oct 2009 19:44:22 +0000 (21:44 +0200)]
hscroll: wrap attribute access added helper functions

15 years agohscroll: changed hscroll_state_t typedef to a struct
Max Kellermann [Sat, 3 Oct 2009 19:42:32 +0000 (21:42 +0200)]
hscroll: changed hscroll_state_t typedef to a struct

15 years agoscreen: disable the welcome screen list with a GLib timer
Max Kellermann [Sat, 3 Oct 2009 19:23:07 +0000 (21:23 +0200)]
screen: disable the welcome screen list with a GLib timer

15 years agomain: added functions dis/enable_update_timer()
Max Kellermann [Sat, 3 Oct 2009 19:11:22 +0000 (21:11 +0200)]
main: added functions dis/enable_update_timer()

15 years agoplaylist: removed unused macros
Max Kellermann [Sat, 3 Oct 2009 18:45:33 +0000 (20:45 +0200)]
playlist: removed unused macros

Removed ENABLE_PLCHANGES and MPD_ERROR.

15 years agoscreen_search: eliminate duplicate results
Max Kellermann [Sat, 3 Oct 2009 18:18:50 +0000 (20:18 +0200)]
screen_search: eliminate duplicate results

15 years agoMerge branch 'master' of git://git.musicpd.org/mithi/ncmpc
Max Kellermann [Sat, 3 Oct 2009 18:18:02 +0000 (20:18 +0200)]
Merge branch 'master' of git://git.musicpd.org/mithi/ncmpc

15 years agoscreen_search: moved code to screen_search_reload()
Max Kellermann [Sat, 3 Oct 2009 18:13:16 +0000 (20:13 +0200)]
screen_search: moved code to screen_search_reload()

This function creates an empty list when the search query has failed.
It is now used on CMD_SCREEN_UPDATE.

15 years agoscreen_search: check for SEARCH_URI in search_simple_query()
Max Kellermann [Sat, 3 Oct 2009 18:13:13 +0000 (20:13 +0200)]
screen_search: check for SEARCH_URI in search_simple_query()

Call mpd_search_add_uri_constraint() in this case.

15 years agolyricwiki plugin: updated to their latest layout
Thomas Jansen [Sat, 3 Oct 2009 18:09:25 +0000 (20:09 +0200)]
lyricwiki plugin: updated to their latest layout

15 years agohd plugin: fix exit code
Thomas Jansen [Sat, 3 Oct 2009 18:09:24 +0000 (20:09 +0200)]
hd plugin: fix exit code

15 years agompdclient: removed mpdclient_filelist_get()
Max Kellermann [Sat, 3 Oct 2009 17:19:46 +0000 (19:19 +0200)]
mpdclient: removed mpdclient_filelist_get()

Not used anymore.

15 years agoutils: don't use mpdclient_filelist_get() in gcmp_list_from_path()
Max Kellermann [Sat, 3 Oct 2009 17:19:08 +0000 (19:19 +0200)]
utils: don't use mpdclient_filelist_get() in gcmp_list_from_path()

Use libmpdclient's mpd_send_list_meta() instead.  This way, we can
stream MPD's response into the GList, and we don't need to read the
full filelist response.

15 years agofilelist: removed filelist_prepend()
Max Kellermann [Sat, 3 Oct 2009 17:19:05 +0000 (19:19 +0200)]
filelist: removed filelist_prepend()

This hack isn't used anymore.

15 years agoscreen_file: don't use mpdclient_filelist_get()
Max Kellermann [Sat, 3 Oct 2009 17:18:59 +0000 (19:18 +0200)]
screen_file: don't use mpdclient_filelist_get()

Use libmpdclient's mpd_send_list_meta() instead.  This way, we don't
have to use filelist_prepend() to the first NULL entry.

15 years agompdclient: moved compare_filelistentry() to filelist.c
Max Kellermann [Sat, 3 Oct 2009 17:18:04 +0000 (19:18 +0200)]
mpdclient: moved compare_filelistentry() to filelist.c

15 years agoutils: simplify gcmp_list_from_path() with "continue"
Max Kellermann [Sat, 3 Oct 2009 16:35:44 +0000 (18:35 +0200)]
utils: simplify gcmp_list_from_path() with "continue"

"continue" the loop when one condition fails.  This simplifies the
"if" conditions.

15 years agoutils: removed filelist_get()!=NULL check
Max Kellermann [Sat, 3 Oct 2009 16:32:17 +0000 (18:32 +0200)]
utils: removed filelist_get()!=NULL check

A filelist object can never have NULL objects (but an entry's entity
object may be NULL).

15 years agoscreen_artist: don't use filelist_prepend()
Max Kellermann [Sat, 3 Oct 2009 16:28:18 +0000 (18:28 +0200)]
screen_artist: don't use filelist_prepend()

filelist_prepend() is quite expensive.  Let's insert the NULL entry
first, and append all entries while they are received.

15 years agompdclient: removed mpdclient_filelist_search()
Max Kellermann [Sat, 3 Oct 2009 16:26:51 +0000 (18:26 +0200)]
mpdclient: removed mpdclient_filelist_search()

It's unused.

15 years agoscreen_artist: check cursor position in cmd() method
Max Kellermann [Sat, 3 Oct 2009 16:21:15 +0000 (18:21 +0200)]
screen_artist: check cursor position in cmd() method

Fix segmentation faults when the list is empty.

15 years agoscreen_artist: removed superfluous braces
Max Kellermann [Sat, 3 Oct 2009 16:21:09 +0000 (18:21 +0200)]
screen_artist: removed superfluous braces

15 years agoscreen_artist: don't use mpdclient_filelist_search()
Max Kellermann [Sat, 3 Oct 2009 16:20:47 +0000 (18:20 +0200)]
screen_artist: don't use mpdclient_filelist_search()

Use libmpdclient directly.  Side effect is that the listing of an
album includes the artist filter, too.  Same album name of different
artists doesn't mix anymore.

15 years agoscreen_browser: select next item after select/add
Max Kellermann [Sat, 3 Oct 2009 16:20:42 +0000 (18:20 +0200)]
screen_browser: select next item after select/add

Commit d08e14fa broke this: previously, the assignment
"cmd=CMD_LIST_NEXT" was passed to list_window_cmd().  With this patch,
list_window_cmd() was called before.  Thanks to Thomas Jansen for
finding this one.

15 years agoplugin: handle stderr messages of lyrics plugins
Thomas Jansen [Sat, 3 Oct 2009 13:32:06 +0000 (15:32 +0200)]
plugin: handle stderr messages of lyrics plugins

Use a second pipe to capture error messages generated by lyrics plugins. If
one plugin succeeds to retrieve some lyrics, we display them and discard the
error messages. If no plugin succeeds, we show the error messages of all
plugins that failed with an exit code other than 69 (EX_UNAVAILABLE,
sysexits.h).

All plugins use exit code 0 to indicate success (i.e. they are able to provide
lyrics on stdout). Exit code 69 indicates failure to retrieve lyrics, but
otherwise normal operation of the plugin. A plugin returning exit code 69 is
not listed as a failed plugin. Other exit codes indicate an internal error in
the plugin. Those plugins are listed as failed along with the output they
provide on stderr.

15 years agompdclient: don't check mpd_song_get_uri()!=NULL
Max Kellermann [Fri, 2 Oct 2009 17:57:22 +0000 (19:57 +0200)]
mpdclient: don't check mpd_song_get_uri()!=NULL

libmpdclient guarantees that this function always returns non-NULL.

15 years agoscreen_search: pass libmpdclient object to search_simple_query()
Max Kellermann [Fri, 2 Oct 2009 17:54:50 +0000 (19:54 +0200)]
screen_search: pass libmpdclient object to search_simple_query()

Pass mpd_connection instead of mpdclient.  Let the caller handle
errors.

15 years agofilelist: added constructor filelist_new_recv()
Max Kellermann [Fri, 2 Oct 2009 17:49:30 +0000 (19:49 +0200)]
filelist: added constructor filelist_new_recv()

This receives a filelist from a mpd_connection.  This code has existed
before, and this patch merges those.

15 years agoscreen_search: pass libmpdclient object to search_advanced_query()
Max Kellermann [Fri, 2 Oct 2009 17:25:52 +0000 (19:25 +0200)]
screen_search: pass libmpdclient object to search_advanced_query()

Let the caller handle the errors.

15 years agoscreen_search: return NULL if advanced search is not used
Max Kellermann [Fri, 2 Oct 2009 17:23:32 +0000 (19:23 +0200)]
screen_search: return NULL if advanced search is not used

After parsing the query, return NULL immediately if no valid advanced
search query could be parsed.  Our caller do_search() will then fall
back to the simple search.

15 years agoscreen_search: use strchr() instead of strrstr()
Max Kellermann [Fri, 2 Oct 2009 17:22:15 +0000 (19:22 +0200)]
screen_search: use strchr() instead of strrstr()

strrstr() is more expensive, and we're just interested in whether
there is a colon, not where.

15 years agoscreen_search: removed pointless loop in search_advanced_query()
Max Kellermann [Fri, 2 Oct 2009 17:21:09 +0000 (19:21 +0200)]
screen_search: removed pointless loop in search_advanced_query()

15 years agoscreen_search: renamed filelist_search() to search_simple_query()
Max Kellermann [Fri, 2 Oct 2009 17:19:11 +0000 (19:19 +0200)]
screen_search: renamed filelist_search() to search_simple_query()

15 years agoscreen_search: call do_search() on CMD_SCREEN_UPDATE
Max Kellermann [Fri, 2 Oct 2009 17:19:06 +0000 (19:19 +0200)]
screen_search: call do_search() on CMD_SCREEN_UPDATE

The old code just called filelist_search(), which is the simple
search.  This could not reload the "advanced" search result.

15 years agoscreen_search: moved search calls to do_search()
Max Kellermann [Fri, 2 Oct 2009 08:53:47 +0000 (10:53 +0200)]
screen_search: moved search calls to do_search()

15 years agoscreen_search: removed check for MPD >= 0.12
Max Kellermann [Fri, 2 Oct 2009 07:45:10 +0000 (09:45 +0200)]
screen_search: removed check for MPD >= 0.12

Redundant, this is checked in main.c right after connection was
established.

15 years agoscreen_client: recover from UPDATE_ALREADY error
Max Kellermann [Fri, 2 Oct 2009 07:35:23 +0000 (09:35 +0200)]
screen_client: recover from UPDATE_ALREADY error

If mpd_connection_clear_error() fails, revert to
mpdclient_handle_error().

15 years agouse mpdclient_is_connected()
Max Kellermann [Fri, 2 Oct 2009 07:19:09 +0000 (09:19 +0200)]
use mpdclient_is_connected()

.. instead of accessing mpdclient.connection directly.

15 years agoscreen_song: pass mpd_connection to screen_song_add_stats()
Max Kellermann [Fri, 2 Oct 2009 07:16:15 +0000 (09:16 +0200)]
screen_song: pass mpd_connection to screen_song_add_stats()

Caller must handle the error.

15 years agoscreen_song: moved code to format_duration_short()
Max Kellermann [Fri, 2 Oct 2009 06:36:36 +0000 (08:36 +0200)]
screen_song: moved code to format_duration_short()

New function in utils.c.  Use that same function in screen_play.c,
status_bar.c and strfsong.c.

15 years agoutils: pass preallocated buffer to format_duration_long()
Max Kellermann [Fri, 2 Oct 2009 06:25:14 +0000 (08:25 +0200)]
utils: pass preallocated buffer to format_duration_long()

15 years agoutils: renamed time_seconds_to_durationstr()
Max Kellermann [Fri, 2 Oct 2009 06:22:05 +0000 (08:22 +0200)]
utils: renamed time_seconds_to_durationstr()

Rename time_seconds_to_durationstr() to format_duration_long().

15 years agostatus_bar: initialize the "buffer" variable with --enable-mini
Max Kellermann [Fri, 2 Oct 2009 05:36:56 +0000 (07:36 +0200)]
status_bar: initialize the "buffer" variable with --enable-mini

Move one #endif.

15 years agoscreen_utils: moved screen_find() to screen_find.c
Max Kellermann [Thu, 1 Oct 2009 22:10:23 +0000 (00:10 +0200)]
screen_utils: moved screen_find() to screen_find.c

15 years agoscreen_browser: check connection in screen_file_cmd()
Max Kellermann [Thu, 1 Oct 2009 22:01:43 +0000 (00:01 +0200)]
screen_browser: check connection in screen_file_cmd()

15 years agoscreen_file: check connection in screen_file_cmd()
Max Kellermann [Thu, 1 Oct 2009 21:58:27 +0000 (23:58 +0200)]
screen_file: check connection in screen_file_cmd()

15 years agoscreen_play: check connection in screen_playlist_cmd()
Max Kellermann [Thu, 1 Oct 2009 21:51:04 +0000 (23:51 +0200)]
screen_play: check connection in screen_playlist_cmd()

15 years agoscreen_play: fixed function prefix
Max Kellermann [Thu, 1 Oct 2009 21:45:51 +0000 (23:45 +0200)]
screen_play: fixed function prefix

Prefix must be "screen_playlist_".

15 years agoscreen_play: check the result of mpd_connection_clear_error()
Max Kellermann [Thu, 1 Oct 2009 21:31:43 +0000 (23:31 +0200)]
screen_play: check the result of mpd_connection_clear_error()

15 years agompdclient: convert all functions to return "bool"
Max Kellermann [Thu, 1 Oct 2009 21:10:53 +0000 (23:10 +0200)]
mpdclient: convert all functions to return "bool"

No libmpdclient error codes.

15 years agompdclient: removed several functions
Max Kellermann [Thu, 1 Oct 2009 21:05:27 +0000 (23:05 +0200)]
mpdclient: removed several functions

Make the code use libmpdclient directly.

15 years agoscreen: moved status message functions to screen_message.c
Max Kellermann [Thu, 1 Oct 2009 20:12:47 +0000 (22:12 +0200)]
screen: moved status message functions to screen_message.c

15 years agoscreen: removed unused macro MAX_SONGNAME_LENGTH
Max Kellermann [Thu, 1 Oct 2009 20:03:53 +0000 (22:03 +0200)]
screen: removed unused macro MAX_SONGNAME_LENGTH

15 years agoscreen: eliminated state macros
Max Kellermann [Thu, 1 Oct 2009 20:03:33 +0000 (22:03 +0200)]
screen: eliminated state macros

Better do it manually.

15 years agoscreen: removed obsolete screen_error() prototype
Max Kellermann [Thu, 1 Oct 2009 20:00:54 +0000 (22:00 +0200)]
screen: removed obsolete screen_error() prototype

15 years agoscreen: removed obsolete screen_get_id() prototype
Max Kellermann [Thu, 1 Oct 2009 17:41:14 +0000 (19:41 +0200)]
screen: removed obsolete screen_get_id() prototype

15 years agoscreen: moved screen_interface externs to each screen header
Max Kellermann [Thu, 1 Oct 2009 17:40:49 +0000 (19:40 +0200)]
screen: moved screen_interface externs to each screen header

Make a header for each screen implementation.

15 years agoscreen: removed unused function volume_length()
Max Kellermann [Thu, 1 Oct 2009 17:40:43 +0000 (19:40 +0200)]
screen: removed unused function volume_length()

15 years agoscreen_lyrics: don't use strfsong() to obtain tags
Max Kellermann [Thu, 1 Oct 2009 17:40:39 +0000 (19:40 +0200)]
screen_lyrics: don't use strfsong() to obtain tags

Use mpd_song_get_tag().  This guarantees that the tags are encoded in
UTF-8.

15 years agostatus_bar: use a GLib timer to remove the message
Max Kellermann [Wed, 30 Sep 2009 22:13:30 +0000 (00:13 +0200)]
status_bar: use a GLib timer to remove the message

15 years agompdclient: rewrite the "fancy swap" code
Max Kellermann [Wed, 30 Sep 2009 21:55:48 +0000 (23:55 +0200)]
mpdclient: rewrite the "fancy swap" code

This is a trick to keep playlist swaps cheap: ncmpc tries to predict
the new playlist.

15 years agoscreen_play: use mpd_cmd_delete_range()
Max Kellermann [Wed, 30 Sep 2009 21:55:40 +0000 (23:55 +0200)]
screen_play: use mpd_cmd_delete_range()

15 years agompdclient: added mpdclient_cmd_delete_range()
Max Kellermann [Wed, 30 Sep 2009 21:55:38 +0000 (23:55 +0200)]
mpdclient: added mpdclient_cmd_delete_range()

MPD 0.16 supports "delete" with a range argument.

15 years agompdclient: rewrite the "fancy delete" code
Max Kellermann [Wed, 30 Sep 2009 21:55:14 +0000 (23:55 +0200)]
mpdclient: rewrite the "fancy delete" code

This is a trick to keep playlist deletes cheap: ncmpc tries to predict
the new playlist.

15 years agompdclient: rewrite the "fancy add" code
Max Kellermann [Wed, 30 Sep 2009 21:54:15 +0000 (23:54 +0200)]
mpdclient: rewrite the "fancy add" code

This is a trick to keep playlist adds cheap: ncmpc tries to predict
the new playlist.

15 years agoremoved obsolete Makefile.am
Max Kellermann [Wed, 30 Sep 2009 20:40:27 +0000 (22:40 +0200)]
removed obsolete Makefile.am

15 years agoplaylist: renamed "id" to "version"
Max Kellermann [Wed, 30 Sep 2009 20:18:22 +0000 (22:18 +0200)]
playlist: renamed "id" to "version"

15 years agompdclient: check to assertion in mpdclient_cmd_add()
Max Kellermann [Wed, 30 Sep 2009 20:13:06 +0000 (22:13 +0200)]
mpdclient: check to assertion in mpdclient_cmd_add()

It's illegal to pass song=NULL.

15 years agoscreen_browser: add "const" to several variables
Max Kellermann [Wed, 30 Sep 2009 20:12:51 +0000 (22:12 +0200)]
screen_browser: add "const" to several variables

15 years agoscreen_browser: pass playlist object to sync_highlights()
Max Kellermann [Wed, 30 Sep 2009 20:02:35 +0000 (22:02 +0200)]
screen_browser: pass playlist object to sync_highlights()

And add the screen_browser_ prefix to the function name.

15 years agoupdated .gitignore
Max Kellermann [Wed, 30 Sep 2009 19:58:11 +0000 (21:58 +0200)]
updated .gitignore

15 years agoscreen_outputs: toggle_output() returns bool
Max Kellermann [Wed, 30 Sep 2009 19:17:48 +0000 (21:17 +0200)]
screen_outputs: toggle_output() returns bool

15 years agoscreen_outputs: implemented the SCREEN_UPDATE command
Max Kellermann [Wed, 30 Sep 2009 19:17:19 +0000 (21:17 +0200)]
screen_outputs: implemented the SCREEN_UPDATE command

This reloads the output list from MPD.

15 years agoscreen_outputs: added update() method
Max Kellermann [Wed, 30 Sep 2009 19:13:21 +0000 (21:13 +0200)]
screen_outputs: added update() method

Automatically queue the "output" idle event when the user
enables/disables an output.

15 years agomoved struct screen_functions to screen_interface.h
Max Kellermann [Wed, 30 Sep 2009 19:08:17 +0000 (21:08 +0200)]
moved struct screen_functions to screen_interface.h

15 years agompdclient: added function mpdclient_get_current_song()
Max Kellermann [Wed, 30 Sep 2009 19:05:48 +0000 (21:05 +0200)]
mpdclient: added function mpdclient_get_current_song()

15 years agoscreen_play: query status.id instead of song.id
Max Kellermann [Wed, 30 Sep 2009 19:05:45 +0000 (21:05 +0200)]
screen_play: query status.id instead of song.id

15 years agoscreen_search: renamed internal functions
Max Kellermann [Wed, 30 Sep 2009 18:50:12 +0000 (20:50 +0200)]
screen_search: renamed internal functions

Use the "screen_search_" prefix.

15 years agoscreen_artist: renamed internal functions
Max Kellermann [Wed, 30 Sep 2009 18:49:26 +0000 (20:49 +0200)]
screen_artist: renamed internal functions

Use the "screen_artist_" prefix.

15 years agoscreen_file: renamed internal functions
Max Kellermann [Wed, 30 Sep 2009 18:42:59 +0000 (20:42 +0200)]
screen_file: renamed internal functions

Use the "screen_file_" prefix.

15 years agomoved screen_file_goto_song() prototype to screen_file.h
Max Kellermann [Wed, 30 Sep 2009 18:39:24 +0000 (20:39 +0200)]
moved screen_file_goto_song() prototype to screen_file.h

15 years agompdclient: removed all callbacks
Max Kellermann [Wed, 30 Sep 2009 18:29:32 +0000 (20:29 +0200)]
mpdclient: removed all callbacks

All users have switched to mpdclient.events.

15 years agoscreen: use idle events in screen_update()
Max Kellermann [Wed, 30 Sep 2009 18:28:38 +0000 (20:28 +0200)]
screen: use idle events in screen_update()

15 years agoscreen_browser: removed browser_playlist_changed()
Max Kellermann [Wed, 30 Sep 2009 18:28:30 +0000 (20:28 +0200)]
screen_browser: removed browser_playlist_changed()

This function is unused, since we have switched to idle events.

15 years agoscreen_search: use idle events instead of playlist/browse callback
Max Kellermann [Wed, 30 Sep 2009 18:26:30 +0000 (20:26 +0200)]
screen_search: use idle events instead of playlist/browse callback

15 years agoscreen_artist: use idle events instead of playlist/browse callback
Max Kellermann [Wed, 30 Sep 2009 18:16:00 +0000 (20:16 +0200)]
screen_artist: use idle events instead of playlist/browse callback

15 years agoscreen_file: use idle events instead of playlist/browse callback
Max Kellermann [Wed, 30 Sep 2009 18:16:00 +0000 (20:16 +0200)]
screen_file: use idle events instead of playlist/browse callback

15 years agoscreen_play: use idle events instead of playlist_callback
Max Kellermann [Wed, 30 Sep 2009 18:16:00 +0000 (20:16 +0200)]
screen_play: use idle events instead of playlist_callback

15 years agompdclient: added property "events", emulate idle
Max Kellermann [Wed, 30 Sep 2009 18:15:59 +0000 (20:15 +0200)]
mpdclient: added property "events", emulate idle

mpdclient_update() sets the "events" property after it has detected
changes.  This helps us eliminate the callback functions, and is a
good preparation for the real "idle" commandd.

15 years agompdclient: replaced error_callback with imported function
Max Kellermann [Wed, 30 Sep 2009 18:15:54 +0000 (20:15 +0200)]
mpdclient: replaced error_callback with imported function

Instead of having a GList of callback functions, call
mpdclient_ui_error(), which is exported by screen_client.c.