Max Kellermann
2bfe6f6412
renamed the "mod" decoder plugin to "mikmod"
...
We have two mod plugins now: modplug and mod. Rename the latter to a
more useful name.
2009-01-24 20:18:44 +01:00
Max Kellermann
5795be1f8d
tag_id3: added MusicBrainz tag support
...
Added support for the MusicBrainz TXXX tags, documented on:
http://musicbrainz.org/doc/MusicBrainzTag
2009-01-24 20:07:23 +01:00
Max Kellermann
b4d90cc28c
tag_id3: always allocate tag object
...
Save some code: always allocate the tag object, and free it when it
turns out to be empty.
2009-01-24 20:02:59 +01:00
Max Kellermann
30e2880675
tag: added support for MusicBrainz tags
...
Added all important id tags from the MusicBrainz wiki:
http://musicbrainz.org/doc/MusicBrainzTag
This should automatically enable its suport in the vorbis and flac
decoder plugins.
2009-01-24 20:02:55 +01:00
Max Kellermann
0dc1b4a44e
modplug: removed EOF check from the while loop
...
EOF is checked by input_stream_read() (decoder_read() here). Don't do
it twice. The check was wrong anyway, it was reversed.
2009-01-24 20:02:06 +01:00
Max Kellermann
793934cf9c
modplug: check for input_stream errors
...
When input_stream_read() returns 0, and input_stream_eof() returns
false, an I/O error has occured. Skip this song.
2009-01-24 19:16:33 +01:00
Max Kellermann
14b37656a6
modplug: use size_t instead of int for buffer sizes
2009-01-24 19:16:31 +01:00
Max Kellermann
4a4c6fb6dc
modplug: check size limit before appending new buffer
...
Don't enlarge the GByteArray when the size limit may overflow in this
operation; check the size limit first.
2009-01-24 19:16:20 +01:00
Max Kellermann
b53e80d785
modplug: use GByteArray.len, remove total_len
...
The local variable "total_len" is superfluous because GByteArray
always knows its size.
2009-01-24 19:16:10 +01:00
Max Kellermann
0c71640528
modplug: unknown size is -1; check for empty file
...
The input_stream API sets size to -1 when the size of the resource is
not known. The modplug decoder checked for size==0, which would be an
empty file.
2009-01-24 19:16:07 +01:00
Max Kellermann
961d172200
modplug: header cleanup
...
Don't include utils.h and log.h, they are relics from the past.
2009-01-24 19:16:05 +01:00
Max Kellermann
9229869f04
modplug: define G_LOG_DOMAIN
...
Make sure that log messages are decorated correctly.
2009-01-24 19:15:53 +01:00
Max Kellermann
b381638009
modplug: declare constants as enum
...
Don't write CPP if you can write C.
2009-01-24 19:15:50 +01:00
Max Kellermann
24d4c2df92
modplug: use only decoder_read(), not input_stream_read()
...
You are allowed to call decoder_read() with decoder==NULL. It is a
convenience function provided by the decoder API. Don't manually fall
back to input_stream_read().
2009-01-24 19:15:48 +01:00
Max Kellermann
e6cb939a82
locate: added locate_item_list_casefold()
...
Merged casefolding code from two locations into this one library
function.
2009-01-24 15:56:34 +01:00
Max Kellermann
6a2118d04c
queue_print, dbUtils: use struct locate_item_list
...
Changed the function prototypes to get locate_item_list objects
instead of num_items/items.
2009-01-24 15:56:34 +01:00
Max Kellermann
ba7c996266
locate: added struct locate_item_list
...
Instead of passing two parameters around (number of items, array of
items), combine both in a variable size struct.
2009-01-24 15:56:30 +01:00
Max Kellermann
e100149124
locate: initialize the whole visited_types array
...
The declaration initialized only the first element. Initialize the
whole array with memset() instead.
2009-01-24 15:27:09 +01:00
Max Kellermann
535cf5b5c9
locate: use bool instead of int
...
Use the C99 bool type instead of integer values (1/0 or 0/-1).
2009-01-24 15:27:05 +01:00
Max Kellermann
3582977e01
locate: no CamelCase
...
Renamed functions and variables.
2009-01-24 15:26:59 +01:00
Max Kellermann
daa5f5924d
queue_print: use new_items instead of items
...
Fix a typo in one of the previous patches.
2009-01-24 15:26:23 +01:00
Max Kellermann
cf9595df18
playlist: removed locate functions to queue_print.c
...
Now playlist.c does not contain any protocol specific code anymore.
2009-01-24 14:55:28 +01:00
Max Kellermann
53e712aca4
locate: renamed LocateTagItem to "struct locate_item"
...
No CamelCase and no typedefs.
2009-01-24 14:52:05 +01:00
Max Kellermann
627d590ce5
command: use queue_print_*()
...
Replaced several wrapper functions from playlist.c, and make command.c
use the queue print functions directly.
2009-01-24 14:52:04 +01:00
Max Kellermann
d449d6abab
playlist: added playlist_get_queue()
...
To allow code outside playlist.c to access the "queue" object,
provide a function which returns a const pointer.
2009-01-24 14:51:35 +01:00
Max Kellermann
6cfe032b94
playlist: renamed the Playlist typedef to "struct playlist"
...
No typedefs.
2009-01-24 13:34:53 +01:00
Max Kellermann
ae2d13ac3e
playlist: moved stopOnError and errorCount into struct playlist
...
Moved the 2 remaining global variables into the playlist struct.
2009-01-24 13:20:07 +01:00
Andrzej Rybczak
82df4cb2b0
modplug: change settings before loading a file
...
alternative settings must be set before the file
is loaded, otherwise they won't be respected.
2009-01-24 13:10:02 +01:00
Laszlo Ashin
84b63c45fa
command: eliminate gcc warning
...
Argument cmd of function command_available() is not used if mpd was
configured without sqlite.
2009-01-24 11:13:58 +01:00
Max Kellermann
48d3404727
commands: don't advertise "sticker" unless configured
...
In the return value of the "commands" command, don't list the
"sticker" command if no sticker file is configured.
2009-01-23 18:51:14 +01:00
Max Kellermann
0e5af7d0f6
playlist: restore random mode after playlist is loaded
...
When the playlist was loaded from the state file, the order numbers
were the same as the positions. In random mode, we need to shuffle
the queue order. To accomplish that, call setPlaylistRandomStatus()
at the end of readPlaylistState(), and do a fresh shuffle.
2009-01-23 18:41:12 +01:00
Max Kellermann
62159e8875
playlist: removed song_id_to_position()
...
song_id_to_position() is only a wrapper for queue_id_to_position().
2009-01-23 18:16:21 +01:00
Max Kellermann
a6ad0cdecc
playlist: fix "clear" crash in random mode
...
When MPD is not playing while in random mode, and the client issues
the "clear" command, MPD crashes in stopPlaylist(), or more exactly,
in queue_order_to_position(-1). Exit from stopPlaylist() if MPD isn't
playing.
2009-01-23 18:15:25 +01:00
Max Kellermann
21bb0aab90
song: include cleanup
...
Removed unused includes.
2009-01-23 16:45:35 +01:00
Max Kellermann
349d249867
playlist: moved saving/loading code to queue_save.c
...
Create a new library which saves/loads the queue to/from the state
file.
2009-01-23 16:35:04 +01:00
Max Kellermann
8afe24c1de
playlist: moved PlaylistInfo() to playlist_print.c
...
PlaylistInfo() (notice the capital 'P') sends a stored playlist to the
client. Move it to a separate library, where all the code which glues
the playlist and the MPD protocol together will live.
2009-01-23 16:34:27 +01:00
Max Kellermann
ed25bdf55a
playlist: moved some printing code to queue_print.c
...
Moved protocol printing functions which operate on the queue to
queue_print.c.
2009-01-23 16:23:59 +01:00
Max Kellermann
4c77a4c494
playlist: pass const pointers to search functions
...
The LocateTagItem objects are not modified.
2009-01-23 16:22:43 +01:00
Max Kellermann
3a86a6ca16
playlist: removed swapSongs()
...
swapSongs() is only a wrapper for queue_swap().
2009-01-23 16:22:38 +01:00
Max Kellermann
276843edd5
playlist: don't unpause on delete
...
When you delete a song from the playlist which was paused, MPD forgot
that it was paused and started playing the next song.
2009-01-23 16:17:21 +01:00
Max Kellermann
032640f9e5
queue: update moved song versions
...
This patch fixes a regression introduced by commit aa9ffc.
2009-01-23 16:17:16 +01:00
Max Kellermann
cf3a9ef065
playlist: added source comments
...
The playlist.c source is currently quite hard to understand. I have
managed to wrap my head around it, and this patch attempts to explain
it to the next guy.
2009-01-23 11:33:24 +01:00
Max Kellermann
b5abc02379
playlist: assert in playPlaylistIfPlayerStopped()
...
The function playPlaylistIfPlayerStopped() is only called when the
player thread is stopped. Converted that runtime check into an
assertion, and remove one indent level.
2009-01-23 11:33:03 +01:00
Max Kellermann
cfbafbefdc
playlist: don't shuffle if not in random mode
...
One of the previous patches removed the "random" mode check from
nextSongInPlaylist(), which caused a shuffle whenever MPD wrapped to
the first song in "repeat" mode. Re-add that "random" check.
2009-01-23 11:32:36 +01:00
Max Kellermann
5d31e7e7d2
playlist: removed unreachable "playing" check
...
In playPlaylist(), the second "song==-1 && playing" check can never be
reached, because at this point, the function has already returned
(after unpausing).
2009-01-23 11:32:07 +01:00
Max Kellermann
e5c323fd57
playlist: removed stopOnError flag from playPlaylist()
...
All callers pass false. Don't bother to collect that parameter.
2009-01-23 00:10:50 +01:00
Max Kellermann
9da7ae02f0
playlist: restart playing in deleteFromPlaylist()
...
When a song is deleted, start playing the next song immediately,
within deleteFromPlaylist(). This allows us to remove the ugly
playlist_noGoToNext flag, and the currentSongInPlaylist() function.
2009-01-23 00:10:38 +01:00
Max Kellermann
0d4319ed30
playlist: calculate next song before deleting the current one
...
By calling queue_next_order() before playlist.current is invalidated
(by the deletion of a song), we get more robust results, and the code
becomes a little bit easier. incrPlaylistCurrent() is unused now, and
can be removed.
2009-01-23 00:10:33 +01:00
Max Kellermann
bd71d3ea78
playlist: return early from shufflePlaylist()
...
Remove one indent level by returning diretly after the check. This
makes the function more readable.
2009-01-23 00:09:29 +01:00
Max Kellermann
00541f8ce9
playlist: replaced playlist_state with flag playlist.playing
...
There were only two possible states: STOP and PLAY. The code looks a
lot easier if we use a bool instead. Move the variable into the
playlist struct.
2009-01-23 00:09:26 +01:00