Code

ncmpc.git
16 years agoscreen_artist: splitted update_metalist()
Max Kellermann [Wed, 1 Oct 2008 07:38:24 +0000 (09:38 +0200)]
screen_artist: splitted update_metalist()

Moved special cases for loading artist, album, song lists to separate
functions.

16 years agoscreen_artist: convert metalist to GPtrArray
Max Kellermann [Wed, 1 Oct 2008 07:37:51 +0000 (09:37 +0200)]
screen_artist: convert metalist to GPtrArray

A linked list is quite uncomfortable here because there is a lot of
indexed access to the list.  Use a GPtrArray of strings instead.

Note that mpdclient_get_artists_utf8() and mpdclient_get_albums_utf8()
return a linked list, and sorting is also performed on the linked
list.  This will be optimized later.

16 years agoscreen_artist: don't insert ".." and "all albums" into list
Max Kellermann [Wed, 1 Oct 2008 07:25:01 +0000 (09:25 +0200)]
screen_artist: don't insert ".." and "all albums" into list

Generate these special list entries on the fly.

16 years agoscreen_artist: moved code to artist_lw_cmd()
Max Kellermann [Wed, 1 Oct 2008 07:24:59 +0000 (09:24 +0200)]
screen_artist: moved code to artist_lw_cmd()

To unify the code, wrap list_window_cmd() in artist_lw_cmd(), which
properly checks the current mode.

16 years agoscreen_play: no song means id=-1
Max Kellermann [Sun, 28 Sep 2008 08:57:11 +0000 (10:57 +0200)]
screen_play: no song means id=-1

"prev_song_id" and "current_song_id" had value 0 if MPD was not
playing at all.  This way, ncmpc cannot see the difference between
"song 0 playing" and "not playing".  Change "not playing" to -1.

16 years agoscreen_play: repaint highlight when mpd starts playing
Max Kellermann [Sun, 28 Sep 2008 08:56:27 +0000 (10:56 +0200)]
screen_play: repaint highlight when mpd starts playing

When deciding whether to repaint the current highlight, test if MPD is
actually playing.  If MPD starts playing, repaint.

16 years agoscreen_play: repaint if current song has changed
Max Kellermann [Fri, 26 Sep 2008 06:48:31 +0000 (08:48 +0200)]
screen_play: repaint if current song has changed

The play_update() function was reduced too much: it didn't repaint the
screen when the current song changed.  Add check for that.

Don't repaint the screen in center_playing_item(), make the caller do
it.

16 years agoignore SIGPIPE
Max Kellermann [Fri, 26 Sep 2008 06:27:54 +0000 (08:27 +0200)]
ignore SIGPIPE

Ignore SIGPIPE, and handle errno==EPIPE instead.

16 years agodon't call lyrics_init if plugin is disabled
Max Kellermann [Thu, 25 Sep 2008 19:51:20 +0000 (21:51 +0200)]
don't call lyrics_init if plugin is disabled

If the lyrics screen is disabled at compile time, don't initialize the
lyrics library in main().

16 years agoscreen_browser: added hotkey for adding song
Max Kellermann [Thu, 25 Sep 2008 19:35:06 +0000 (21:35 +0200)]
screen_browser: added hotkey for adding song

CMD_ADD ('a') appends a song to the playlist, no matter if it is
already there, i.e. unlike CMD_SELECT, it does not toggle the song.

16 years agofix miscellaneous sparse warnings
Max Kellermann [Thu, 25 Sep 2008 19:24:58 +0000 (21:24 +0200)]
fix miscellaneous sparse warnings

Static variables, pointers vs integers, void function returning, ...

16 years agoMakefile: added "sparse-check" target
Max Kellermann [Thu, 25 Sep 2008 19:24:57 +0000 (21:24 +0200)]
Makefile: added "sparse-check" target

16 years agoscreen: removed screen.mode
Max Kellermann [Thu, 25 Sep 2008 19:21:29 +0000 (21:21 +0200)]
screen: removed screen.mode

Everything is now managed with a pointer to the screen_functions
struct.

16 years agoscreen: removed screen ids
Max Kellermann [Thu, 25 Sep 2008 19:21:27 +0000 (21:21 +0200)]
screen: removed screen ids

Finally remove all screen ids, they are not used anymore.

16 years agoscreen: pass screen_functions pointer to switch_screen_mode()
Max Kellermann [Thu, 25 Sep 2008 19:21:00 +0000 (21:21 +0200)]
screen: pass screen_functions pointer to switch_screen_mode()

Trying to get rid of the screen ids.  A pointer to screen_functions is
better for identifying a screen.

16 years agoscreen: replaced get_cur_mode_id() with screen_is_visible()
Max Kellermann [Thu, 25 Sep 2008 19:20:10 +0000 (21:20 +0200)]
screen: replaced get_cur_mode_id() with screen_is_visible()

Screen code shouldn't know anything about the screen ids (which will
be eliminated completely later).  Instead of comparing ids, compare
the screen_functions pointer.

16 years agoscreen: moved code to screen_list.c
Max Kellermann [Thu, 25 Sep 2008 19:20:06 +0000 (21:20 +0200)]
screen: moved code to screen_list.c

Move the hard-coded screen list and everything which works with this
array to screen_list.c.

16 years agoscreen: don't compile disabled sources
Max Kellermann [Thu, 25 Sep 2008 18:00:03 +0000 (20:00 +0200)]
screen: don't compile disabled sources

Instead of evaluating macros from config.h in the disabled source,
don't start the compiler on it at all.

16 years agoscreen_utils: don't call wmove() twice
Max Kellermann [Thu, 25 Sep 2008 17:19:39 +0000 (19:19 +0200)]
screen_utils: don't call wmove() twice

The second wmove() is redundant, because the cursor is already there
after waddstr().  This also repairs wide characters in the prompt.

16 years agofilelist: removed attribute "updated"
Max Kellermann [Thu, 25 Sep 2008 17:19:37 +0000 (19:19 +0200)]
filelist: removed attribute "updated"

Since all screen updating is now on demand, we don't need this flag
anymore.

16 years agoscreen: don't pass screen pointer to method update()
Max Kellermann [Thu, 25 Sep 2008 16:43:50 +0000 (18:43 +0200)]
screen: don't pass screen pointer to method update()

play_update() is the only update() implementation left, and it does
not use the screen pointer.  Remove it from the method signature.

16 years agoscreen_play: hide cursor with a timer
Max Kellermann [Thu, 25 Sep 2008 16:42:48 +0000 (18:42 +0200)]
screen_play: hide cursor with a timer

Instead of hiding the cursor in the update() callback, hide it with a
glib main loop timeout.

16 years agoscreen_search: removed update() method
Max Kellermann [Thu, 25 Sep 2008 16:42:44 +0000 (18:42 +0200)]
screen_search: removed update() method

Repaint the search screen on demand.  No need for the update() method
anymore.

16 years agoscreen_search: removed version check from paint() method
Max Kellermann [Thu, 25 Sep 2008 16:38:27 +0000 (18:38 +0200)]
screen_search: removed version check from paint() method

The check wasn't actually doing anything, except leaking memory.
Remove it.

16 years agoconfigure: updated automake options
Max Kellermann [Thu, 25 Sep 2008 15:52:22 +0000 (17:52 +0200)]
configure: updated automake options

New automake options are "gnu 1.6 dist-bzip2".  Sync with Makefile.am.

16 years agolyrics: replaced "hd.py" with "hd.sh"
Max Kellermann [Thu, 25 Sep 2008 15:49:56 +0000 (17:49 +0200)]
lyrics: replaced "hd.py" with "hd.sh"

Replace the "hd" plugin with a trivial shell script.

16 years agoscreen_file: removed update() method
Max Kellermann [Thu, 25 Sep 2008 15:44:57 +0000 (17:44 +0200)]
screen_file: removed update() method

Repaint the file screen on demand.  No need for the update() method
anymore.

16 years agoscreen_artist: removed update() method
Max Kellermann [Thu, 25 Sep 2008 15:44:48 +0000 (17:44 +0200)]
screen_artist: removed update() method

Repaint the artist screen on demand.  No need for the update() method
anymore.

16 years agoscreen_playlist: don't repaint in update()
Max Kellermann [Thu, 25 Sep 2008 15:44:47 +0000 (17:44 +0200)]
screen_playlist: don't repaint in update()

Repaint the playlist window on demand.  Don't repaint it
unconditionally in play_update().

16 years agolist_window: removed property "repaint"
Max Kellermann [Thu, 25 Sep 2008 15:42:57 +0000 (17:42 +0200)]
list_window: removed property "repaint"

The property "repaint" is never read, since all callers repaint the
list window on demand.

16 years agoscreen_lyrics: removed the "update" method
Max Kellermann [Thu, 25 Sep 2008 15:42:55 +0000 (17:42 +0200)]
screen_lyrics: removed the "update" method

Automatically redraw the screen on demand, whenever data has changed.

16 years agoscreen_lyrics: added lyrics_repaint()
Max Kellermann [Thu, 25 Sep 2008 15:42:30 +0000 (17:42 +0200)]
screen_lyrics: added lyrics_repaint()

lyrics_repaint() or lyrics_repaint_if_active() are called after data
has changed, and the screen needs an update.

16 years agoscreen_keydef: removed the update() method
Max Kellermann [Thu, 25 Sep 2008 15:41:01 +0000 (17:41 +0200)]
screen_keydef: removed the update() method

Automatically redraw the list on demand, whenever data has changed.

16 years agoscreen: don't pass screen pointer to method paint()
Max Kellermann [Thu, 25 Sep 2008 15:40:59 +0000 (17:40 +0200)]
screen: don't pass screen pointer to method paint()

None of the paint() implementations actually use the screen pointer -
remove it from the method signature.

16 years agoscreen: don't call wrefresh() in methods paint() and update()
Max Kellermann [Thu, 25 Sep 2008 15:40:36 +0000 (17:40 +0200)]
screen: don't call wrefresh() in methods paint() and update()

screen_paint() and screen_update() are responsible for refreshing the
screen.  We can remove all wrefresh() and wnoutrefresh() invocations
from all paint() and update() method implementations.

16 years agolist_window: removed property "clear"
Max Kellermann [Thu, 25 Sep 2008 15:40:29 +0000 (17:40 +0200)]
list_window: removed property "clear"

Without clearing previous screen contents, there may be corruptions,
make this mandatory and optimize screen clearing.

16 years agocode style, indent with tabs X
Max Kellermann [Thu, 25 Sep 2008 15:40:28 +0000 (17:40 +0200)]
code style, indent with tabs X

Follow the same code style als MPD itself.

16 years agoMakefile: don't install disabled lyrics plugins
Max Kellermann [Thu, 25 Sep 2008 14:03:44 +0000 (16:03 +0200)]
Makefile: don't install disabled lyrics plugins

Don't install the lyrics plugins if the lyrics screen is disabled.

16 years agoconfigure: fix default lyrics plugin directory
Max Kellermann [Thu, 25 Sep 2008 13:42:17 +0000 (15:42 +0200)]
configure: fix default lyrics plugin directory

When the user does not specify "--prefix", ${prefix} is "NONE".  This
breaks the default lyrics plugin directory, which was
"${prefix}/lib/ncmpc/lyrics".  Fall back to ${ac_default_prefix} if
${prefix} is NONE.

16 years agoMakefile: honor DESTDIR
Max Kellermann [Thu, 25 Sep 2008 13:25:09 +0000 (15:25 +0200)]
Makefile: honor DESTDIR

When installing lyrics plugins, I forgot to honor $(DESTDIR) if set.

16 years agolyrics: print text in UTF-8
Max Kellermann [Tue, 23 Sep 2008 11:41:49 +0000 (13:41 +0200)]
lyrics: print text in UTF-8

Python defaults to sending ASCII characters, and aborts if there are
non-ASCII characters in the string.  Unfortunately, due to "C.UTF-8"
being not defined, we cannot reliably make Python use UTF-8, without
further locale settings.  Thus, work around this mess by manually
encoding the result to UTF-8 in the script.

16 years agoscreen_play: use list_window_check_selected()
Max Kellermann [Tue, 23 Sep 2008 11:29:25 +0000 (13:29 +0200)]
screen_play: use list_window_check_selected()

Instead of manually adjusting the selection, let list_window.c do it.

16 years agolist_window: converted several public functions to static
Max Kellermann [Tue, 23 Sep 2008 11:29:25 +0000 (13:29 +0200)]
list_window: converted several public functions to static

There are lots of functions not being used outside of list_window.c.
Make them static to make it easier for gcc to optimize.

16 years agolyrics: configurable global plugin directory
Max Kellermann [Tue, 23 Sep 2008 11:15:42 +0000 (13:15 +0200)]
lyrics: configurable global plugin directory

The lyrics library loads all plugins from the directory configured
with "--with-lyrics-plugin-dir".

16 years agoconfigure: removed unused lyrics checks
Max Kellermann [Tue, 23 Sep 2008 10:26:18 +0000 (12:26 +0200)]
configure: removed unused lyrics checks

Removed the commented checks for libraries which aren't being used
anymore by the new lyrics code.

16 years agoconfigure: removed gthread test
Max Kellermann [Tue, 23 Sep 2008 10:14:18 +0000 (12:14 +0200)]
configure: removed gthread test

Threading has been disabled when I overhauled lyrics support.  Remove
all libgthread checks from configure.ac.

16 years agolyrics: added callback
Max Kellermann [Tue, 23 Sep 2008 10:08:53 +0000 (12:08 +0200)]
lyrics: added callback

Instead of letting our caller poll lyrics_result(), call it back as
soon as we have the result.

16 years agolyrics: reimplemented with aynchronous I/O
Max Kellermann [Tue, 23 Sep 2008 10:08:16 +0000 (12:08 +0200)]
lyrics: reimplemented with aynchronous I/O

Instead of creating a thread for handling lyrics plugin data, register
a channel at the glib main loop.

16 years agoscreen_lyrics: set current.song
Max Kellermann [Tue, 23 Sep 2008 10:08:14 +0000 (12:08 +0200)]
screen_lyrics: set current.song

The variable current.song was never set, thus the cache did not work.
Don't reset it in screen_lyrics_clear() (which is called from
screen_lyrics_set()).

16 years agoautogen.sh: don't ignore errors
Max Kellermann [Mon, 22 Sep 2008 08:58:53 +0000 (10:58 +0200)]
autogen.sh: don't ignore errors

Set the shell option "-e" to abort when one of the tools fails.

16 years agooptions: added constant option_table_size
Max Kellermann [Mon, 22 Sep 2008 08:39:01 +0000 (10:39 +0200)]
options: added constant option_table_size

Instead of checking for the sentinel at the end of the option table,
check the option_table_size constant.

16 years agooptions: constant options_table
Max Kellermann [Mon, 22 Sep 2008 08:39:01 +0000 (10:39 +0200)]
options: constant options_table

Make the options_table constant, since it is never modified.

16 years agoscreen_utils: simplified call to wreadln_masked()
Max Kellermann [Mon, 22 Sep 2008 08:39:01 +0000 (10:39 +0200)]
screen_utils: simplified call to wreadln_masked()

If prompt is NULL, do not add a second call to wreadln_masked() with a
literal string, but assign this literal string to the variable
"prompt".  This saves several bytes in the compiled binary.

16 years agoscreen_utils: hide cursor after screen_read_password()
Max Kellermann [Mon, 22 Sep 2008 08:39:01 +0000 (10:39 +0200)]
screen_utils: hide cursor after screen_read_password()

The call to curs_set(0) in screen_read_password() was dead code,
because it was after the function return.  Repair that.

16 years agoscreen: unsigned integers for screen dimensions
Max Kellermann [Mon, 22 Sep 2008 08:39:01 +0000 (10:39 +0200)]
screen: unsigned integers for screen dimensions

Store screen width and height as unsigned integer.

16 years agocode style, indent with tabs IX
Max Kellermann [Mon, 22 Sep 2008 08:38:58 +0000 (10:38 +0200)]
code style, indent with tabs IX

Follow the same code style als MPD itself.

16 years agoscreen: simplified CMD_SCREEN_UPDATE handlers
Max Kellermann [Mon, 22 Sep 2008 08:21:34 +0000 (10:21 +0200)]
screen: simplified CMD_SCREEN_UPDATE handlers

Since screen.c has default code for CMD_SCREEN_UPDATE, return 0 from
the command handlers and let screen.c do the rest.

16 years agoscreen: don't set list_window->repaint
Max Kellermann [Mon, 22 Sep 2008 08:20:57 +0000 (10:20 +0200)]
screen: don't set list_window->repaint

Several screens ignore the attribute list_window->repaint.  Don't set
it there.  It will be replaced with a more intelligent repaint
algorithm later.

16 years agoscreen: removed window.cur_action_id
Max Kellermann [Mon, 22 Sep 2008 08:07:00 +0000 (10:07 +0200)]
screen: removed window.cur_action_id

The variable cur_action_id is not used at all.

16 years agoscreen: last_cmd should be a command_t
Max Kellermann [Mon, 22 Sep 2008 08:05:52 +0000 (10:05 +0200)]
screen: last_cmd should be a command_t

last_cmd stores the previous command sent to the screen.  It is not a
timestamp, and its type should be command_t.

16 years agoscreen: moved input_timestamp to screen_play.c
Max Kellermann [Mon, 22 Sep 2008 08:05:48 +0000 (10:05 +0200)]
screen: moved input_timestamp to screen_play.c

Since the input_timestamp is only used by screen_play, move it there.

16 years agoscreen: moved list_window mouse code to list_window.c
Max Kellermann [Mon, 22 Sep 2008 08:04:46 +0000 (10:04 +0200)]
screen: moved list_window mouse code to list_window.c

Move the portion of screen_get_mouse_event() which handles list_window
clicks to list_window.c.  The code contained a NULL pointer
dereference, which is now fixed.

16 years agoscreen: moved code to ncu.c
Max Kellermann [Mon, 22 Sep 2008 08:04:39 +0000 (10:04 +0200)]
screen: moved code to ncu.c

Moved basic libncurses initialization to ncu.c and ncu.h.  Keep
generic code out of screen.c.

16 years agomain: free keyboard IO channel
Max Kellermann [Mon, 22 Sep 2008 08:04:33 +0000 (10:04 +0200)]
main: free keyboard IO channel

Before terminating ncmpc, free the keyboard GIOChannel object.

16 years agoconfigure: modern AC_INIT and AM_INIT_AUTOMAKE invocation
Max Kellermann [Mon, 22 Sep 2008 08:04:32 +0000 (10:04 +0200)]
configure: modern AC_INIT and AM_INIT_AUTOMAKE invocation

Provide program name and version in AC_INIT.  Add the option
"dist-bzip2" to AM_INIT_AUTOMAKE.

16 years agoadded option "welcome-screen-list"
David Shakaryan [Mon, 22 Sep 2008 03:59:56 +0000 (05:59 +0200)]
added option "welcome-screen-list"

"welcome-screen-list" shows the screen list in the top row shortly
after startup, and is enabled by default.

16 years agobrowse: ensure that filelist!=NULL
Max Kellermann [Sun, 21 Sep 2008 20:45:08 +0000 (22:45 +0200)]
browse: ensure that filelist!=NULL

There are several places where browser.filelist can become NULL.
Catch that everywhere and generate an empty filelist in this case.

16 years agobrowser: check if the selection is valid
Max Kellermann [Sun, 21 Sep 2008 20:45:04 +0000 (22:45 +0200)]
browser: check if the selection is valid

Don't call filelist_get() with an invalid index.

16 years agosupport: added assertions
Max Kellermann [Sun, 21 Sep 2008 20:44:47 +0000 (22:44 +0200)]
support: added assertions

Check the function parameters.

16 years agoscreen_artist: check if anything is selected
Max Kellermann [Sun, 21 Sep 2008 20:44:04 +0000 (22:44 +0200)]
screen_artist: check if anything is selected

Don't try to call add_query() with no valid selection, this causes a
segfault.  This usually happens when ncmpc isn't connected.

16 years agolibmpdclient: added another connection->sock check
Max Kellermann [Sun, 21 Sep 2008 20:43:57 +0000 (22:43 +0200)]
libmpdclient: added another connection->sock check

Check if connection->sock is valid in mpd_executeCommand().

16 years agompdclient: check errorCode only if MPD_ERROR_ACK is set
Max Kellermann [Sun, 21 Sep 2008 20:42:52 +0000 (22:42 +0200)]
mpdclient: check errorCode only if MPD_ERROR_ACK is set

connection->errorCode has an undefined value when connection->error is
not MPD_ERROR_ACK.  Read it only if MPD_ERROR_ACK is set, to make
valgrind happy.

16 years agompdclient: fix memory leak in mpdclient_finish_command()
Max Kellermann [Sun, 21 Sep 2008 20:42:51 +0000 (22:42 +0200)]
mpdclient: fix memory leak in mpdclient_finish_command()

During authentication, the message pointer was allocated, but never
freed.  Allocate it only if it is really used (and freed).

16 years agocode style, indent with tabs VIII
Max Kellermann [Sun, 21 Sep 2008 20:39:11 +0000 (22:39 +0200)]
code style, indent with tabs VIII

Follow the same code style als MPD itself.

16 years agolibmpdclient: check connection->sock >= 0
Max Kellermann [Sun, 21 Sep 2008 17:48:39 +0000 (19:48 +0200)]
libmpdclient: check connection->sock >= 0

mpd_wait() must not be called when the socket is dead; add an
assertion there.  In mpd_recv(), add a run-time check.

16 years agoadded optional bitrate display to status bar
J. Alexander Treuman [Sun, 21 Sep 2008 17:37:43 +0000 (19:37 +0200)]
added optional bitrate display to status bar

If visible-bitrate is enabled, then the current bitrate will be drawn next
to the song time in the status bar.  By default it will not be displayed.

16 years agowreadln: adding additional line editing binds
J. Alexander Treuman [Sun, 21 Sep 2008 19:37:42 +0000 (21:37 +0200)]
wreadln: adding additional line editing binds

Adding some GNU readline-style binds.  These are ^B/^F to move the cursor
back/forward, and ^N/^P to go to the next/previous line.

16 years agoncmpc.1: -k is the short version of --key-file, not -P
J. Alexander Treuman [Sun, 21 Sep 2008 19:37:25 +0000 (21:37 +0200)]
ncmpc.1: -k is the short version of --key-file, not -P

16 years agogenerate po/Makefile.in instead of bundling it
J. Alexander Treuman [Sun, 21 Sep 2008 19:37:03 +0000 (21:37 +0200)]
generate po/Makefile.in instead of bundling it

The previously bundled po/Makefile.in would use predefined variables that
should be set by the configure script.  f.e., $prefix was defined as
/usr/local, and caused po files to always be installed there instead of in
the prefix given to ./configure.

16 years agoconfigure.ac: don't enable the lyrics screen by default
J. Alexander Treuman [Sun, 21 Sep 2008 19:36:11 +0000 (21:36 +0200)]
configure.ac: don't enable the lyrics screen by default

The configure help text already said the lyrics screen was disabled by
default.  Now it actually will be.

16 years agoautogen: don't run ./configure if $NOCONFIGURE is set
J. Alexander Treuman [Sun, 21 Sep 2008 19:36:09 +0000 (21:36 +0200)]
autogen: don't run ./configure if $NOCONFIGURE is set

16 years agompdclient: don't call screen_status_message()
Max Kellermann [Sun, 21 Sep 2008 11:50:35 +0000 (13:50 +0200)]
mpdclient: don't call screen_status_message()

The caller should decide how to display error messages.

16 years agoAdding crop feature in ncmpc
Yannick LM [Sun, 21 Sep 2008 11:50:26 +0000 (13:50 +0200)]
Adding crop feature in ncmpc

The "crop" command deletes all songs from the playlist, except the one
currently being played.

16 years agoscreen_help: removed update() method
Max Kellermann [Sun, 21 Sep 2008 11:48:44 +0000 (13:48 +0200)]
screen_help: removed update() method

Why redraw the help screen when nothing has changed?  Redraw it only
after help_cmd(), and when explicitly requested (help_paint()).

16 years agofilelist: fix segfault during filelist_sort()
Max Kellermann [Fri, 19 Sep 2008 15:31:17 +0000 (17:31 +0200)]
filelist: fix segfault during filelist_sort()

When I converted the filelist from GList to GPtrArray, I missed that
the GCompareFunc does not actually get the pointers from
g_ptr_array_sort(), but pointers to the pointers...  run
g_ptr_array_sort_with_data() instead with a wrapper function.

16 years agofilelist: free entries with g_slice_free()
Max Kellermann [Fri, 19 Sep 2008 14:44:23 +0000 (16:44 +0200)]
filelist: free entries with g_slice_free()

Somehow I forgot about changing free() to g_slice_free() in the
previous patch...

16 years agofilelist: allocate entries with g_slice_alloc()
Max Kellermann [Fri, 19 Sep 2008 14:37:06 +0000 (16:37 +0200)]
filelist: allocate entries with g_slice_alloc()

In this case, slices are faster.  Also fix a memory leak in
filelist_prepend() which I simply forgot about in the last patch set.

16 years agoproperly configure M4 macro dir
unK [Fri, 19 Sep 2008 14:37:06 +0000 (16:37 +0200)]
properly configure M4 macro dir

Add information about the M4 macro dir ./m4/ to both configure.ac and
Makefile.am.

16 years agofilelist: use GPtrArray instead of GList
Max Kellermann [Fri, 19 Sep 2008 14:25:28 +0000 (16:25 +0200)]
filelist: use GPtrArray instead of GList

Since we do a lot of indexed accesses to the filelist, a linked list
doesn't seem appropriate.  Use GPtrArray instead.

16 years agobrowser: added function browser_get_selected()
Max Kellermann [Fri, 19 Sep 2008 14:24:37 +0000 (16:24 +0200)]
browser: added function browser_get_selected()

browser_get_selected() checks if there is a file list and a valid
selection, and returns the selected entry.

16 years agoscreen_search: free second file list
Max Kellermann [Fri, 19 Sep 2008 14:23:33 +0000 (16:23 +0200)]
screen_search: free second file list

Fix a memory leak: the concatened list was never freed.

16 years agofilelist: provide more functions for working with a filelist
Max Kellermann [Fri, 19 Sep 2008 14:23:31 +0000 (16:23 +0200)]
filelist: provide more functions for working with a filelist

Avoid direct accesses to the filelist struct, provide an API for that.

16 years agofilelist: drop "mpdclient" prefix
Max Kellermann [Fri, 19 Sep 2008 14:22:44 +0000 (16:22 +0200)]
filelist: drop "mpdclient" prefix

The separate filelist library does not depend on mpdclient, so the
prefix is superfluous.

16 years agobrowser: use mpdclient_filelist_find_song() in set_highlight()
Max Kellermann [Fri, 19 Sep 2008 12:48:22 +0000 (14:48 +0200)]
browser: use mpdclient_filelist_find_song() in set_highlight()

A song should not be twice in the browser.  Simplify set_highlight()
by finding the entry with mpdclient_filelist_find_song().

16 years agobrowser: song must not be NULL in set_highlight()
Max Kellermann [Fri, 19 Sep 2008 12:45:32 +0000 (14:45 +0200)]
browser: song must not be NULL in set_highlight()

The caller must not pass NULL to set_highlight().  Replaced check with
assertion.

16 years agofilelist: song must not be NULL
Max Kellermann [Fri, 19 Sep 2008 12:42:09 +0000 (14:42 +0200)]
filelist: song must not be NULL

A caller must not pass NULL to mpdclient_filelist_find_song().
Replace the check with an assertion.

16 years agompdclient: moved code to filelist.c
Max Kellermann [Fri, 19 Sep 2008 12:10:37 +0000 (14:10 +0200)]
mpdclient: moved code to filelist.c

Move everything which is solely filelist related to filelist.c and
filelist.h.  Fix the indentation of that file, and provide the struct
name "filelist".  Don't clear data in mpdclient_filelist_free() before
calling g_free().  Constify the "song" parameter to
mpdclient_filelist_find_song().

16 years agocode style, indent with tabs VII
Max Kellermann [Fri, 19 Sep 2008 12:10:35 +0000 (14:10 +0200)]
code style, indent with tabs VII

Follow the same code style als MPD itself.

16 years agofix terminal resizing (SIGWINCH)
Max Kellermann [Fri, 19 Sep 2008 06:02:40 +0000 (08:02 +0200)]
fix terminal resizing (SIGWINCH)

When I replaced ncmpc's old main loop with g_main_loop from libglib,
SIGWINCH (i.e. window resizing) stopped working.  This regression was
caused by the fact that ncurses' wgetch() function was only called
when there was actually data on STDIN.  wgetch() has several side
effects besides reading data from STDIN, for example it checks whether
there has been a window resize.

Fix this with a custom SIGWINCH handler.

16 years agoremoved the clock screen
Max Kellermann [Thu, 18 Sep 2008 21:35:12 +0000 (23:35 +0200)]
removed the clock screen

Why should an audio player display a large clock?