| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Moved basic libncurses initialization to ncu.c and ncu.h. Keep
generic code out of screen.c.
|
|
|
|
| |
Before terminating ncmpc, free the keyboard GIOChannel object.
|
|
|
|
|
| |
"welcome-screen-list" shows the screen list in the top row shortly
after startup, and is enabled by default.
|
|
|
|
|
| |
There are several places where browser.filelist can become NULL.
Catch that everywhere and generate an empty filelist in this case.
|
|
|
|
| |
Don't call filelist_get() with an invalid index.
|
|
|
|
| |
Check the function parameters.
|
|
|
|
|
| |
Don't try to call add_query() with no valid selection, this causes a
segfault. This usually happens when ncmpc isn't connected.
|
|
|
|
| |
Check if connection->sock is valid in mpd_executeCommand().
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
During authentication, the message pointer was allocated, but never
freed. Allocate it only if it is really used (and freed).
|
|
|
|
| |
Follow the same code style als MPD itself.
|
|
|
|
|
| |
mpd_wait() must not be called when the socket is dead; add an
assertion there. In mpd_recv(), add a run-time check.
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
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.
|
|
|
|
| |
The caller should decide how to display error messages.
|
|
|
|
|
| |
The "crop" command deletes all songs from the playlist, except the one
currently being played.
|
|
|
|
|
| |
Why redraw the help screen when nothing has changed? Redraw it only
after help_cmd(), and when explicitly requested (help_paint()).
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Somehow I forgot about changing free() to g_slice_free() in the
previous patch...
|
|
|
|
|
| |
In this case, slices are faster. Also fix a memory leak in
filelist_prepend() which I simply forgot about in the last patch set.
|
|
|
|
|
| |
Since we do a lot of indexed accesses to the filelist, a linked list
doesn't seem appropriate. Use GPtrArray instead.
|
|
|
|
|
| |
browser_get_selected() checks if there is a file list and a valid
selection, and returns the selected entry.
|
|
|
|
| |
Fix a memory leak: the concatened list was never freed.
|
|
|
|
| |
Avoid direct accesses to the filelist struct, provide an API for that.
|
|
|
|
|
| |
The separate filelist library does not depend on mpdclient, so the
prefix is superfluous.
|
|
|
|
|
| |
A song should not be twice in the browser. Simplify set_highlight()
by finding the entry with mpdclient_filelist_find_song().
|
|
|
|
|
| |
The caller must not pass NULL to set_highlight(). Replaced check with
assertion.
|
|
|
|
|
| |
A caller must not pass NULL to mpdclient_filelist_find_song().
Replace the check with an assertion.
|
|
|
|
|
|
|
|
| |
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().
|
|
|
|
| |
Follow the same code style als MPD itself.
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
Why should an audio player display a large clock?
|
|
|
|
|
| |
It is guaranteed that the "song" attribute is not NULL, remove the
check.
|
|
|
|
|
|
| |
browser_select_entry() checked the entry's "highlight" flag twice: the
first time, it was toggled, and the second time, action was performed
based on the flag. Merge the two checks.
|
|
|
|
|
| |
The function browser_select_entry() returns early when the entity type
is not "SONG". No need to double check that.
|
|
|
|
|
|
| |
Moved code from browser_handle_select(). Call this new function also
from browser_handle_select_all(). This fixes a bug in select_all():
it actually did not select all, but stopped after the first song.
|
| |
|
|
|
|
|
| |
Merge code from all 3 browser screens into one generic browser
function.
|
|
|
|
| |
Isolate the generic browser code from the directory browser.
|
|
|
|
|
| |
We are going to separate the browser functions from screen_file.c.
Move all variables which are going to be needed by this code.
|
| |
|
|
|
|
| |
Follow the same code style als MPD itself.
|
|
|
|
|
|
|
|
| |
This patch was taken from bug 476, author unknown
(http://www.musicpd.org/mantis/view.php?id=476). It changes the
definition of my_strlen(): instead of returning the number of UTF-8
characters, it counts the number of terminal cells occupied by a
string.
|
|
|
|
| |
Follow the same code style als MPD itself.
|
|
|
|
|
|
|
|
|
|
| |
CMD_PLAY is mapped to the Enter key by default. Some screens
(mis-)use it for navigation, for entering a directory. The playlist
screen actually plays the file under the cursor. On all other
screens, pressing Enter may be confusing, since it is more of a
"confirmation" key instead of "play". We should probaby add
CMD_CONFIRM later, but for now, disable the general CMD_PLAY handler
in screen.c. This fixes bug 240.
|
|
|
|
|
|
|
| |
The resolver library provides unified access to all resolvers
(getaddrinfo(), gethostbyname(), Unix domain sockets). Like
getaddrinfo(), it can return more than one address for a host name.
This fixes bug 1517 (http://www.musicpd.org/mantis/view.php?id=1517).
|
|
|
|
|
| |
Call g_main_loop_quit() on CMD_QUIT, instead of exit() with an
atexit() handler.
|
|
|
|
|
|
| |
The playlist is reset when the connection to the MPD server is
closed. After a successful reconnect, we have to reload the full
playlist. To remember this, also reset the id attribute.
|
|
|
|
|
| |
The caller may check the playlist.id instead of checking the old
"updated" flag.
|