| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
Don't declare and export variables specific to stored playlists in
playlist.c/playlist.h.
|
|
|
|
|
| |
Start the decoder thread when the player thread starts. The decoder
thread is already stopped by the player thread.
|
|
|
|
|
| |
player_control.thread contains the handle of the player thread, or
NULL if the player thread isn't running.
|
|
|
|
|
| |
decoder_control.thread contains the handle of the decoder thread, or
NULL if the decoder thread isn't running.
|
|
|
|
|
| |
Some code will be a little bit simpler if the dot is part of the
string literal.
|
|
|
|
| |
Document alsa_data members.
|
|
|
|
| |
frame_size is a memory size and should be a size_t, not a signed integer.
|
|
|
|
| |
Renamed types, functions, variables.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Two bugs here led to a large number of interrupts being generated on the
sound card when ALSA output is being used. Because we specify no default
period_time, the sound card gives us 3000 interrupts/sec rather than a more
sane 20 or 30. This completes the revert of dd7711 already started by
4ca24f.
The larger bug was in the change to config_get_block_unsigned() and using 0
as the default value for both 'buffer_time' and 'period_time'. This means
any pre-setting of these options in newAlsaData() gets wiped out. Add a new
default for period_time, and ensure default values for buffer_time and
period_time are used if none are provided by the user.
Signed-off-by: Dan McGee <dan@archlinux.org>
[mk: set defaults in newAlsaData() to fix auto-configuration; renamed
"_MS" back to "_US" because ALSA expects microseconds, not milliseconds]
Signed-off-by: Max Kellermann <max@duempel.org>
|
| |
|
|
|
|
|
| |
We have two mod plugins now: modplug and mod. Rename the latter to a
more useful name.
|
|
|
|
|
|
| |
Added support for the MusicBrainz TXXX tags, documented on:
http://musicbrainz.org/doc/MusicBrainzTag
|
|
|
|
|
| |
Save some code: always allocate the tag object, and free it when it
turns out to be empty.
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
EOF is checked by input_stream_read() (decoder_read() here). Don't do
it twice. The check was wrong anyway, it was reversed.
|
|
|
|
|
| |
When input_stream_read() returns 0, and input_stream_eof() returns
false, an I/O error has occured. Skip this song.
|
| |
|
|
|
|
|
| |
Don't enlarge the GByteArray when the size limit may overflow in this
operation; check the size limit first.
|
|
|
|
|
| |
The local variable "total_len" is superfluous because GByteArray
always knows its size.
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
Don't include utils.h and log.h, they are relics from the past.
|
|
|
|
| |
Make sure that log messages are decorated correctly.
|
|
|
|
| |
Don't write CPP if you can write C.
|
|
|
|
|
|
| |
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().
|
|
|
|
|
| |
Merged casefolding code from two locations into this one library
function.
|
|
|
|
|
| |
Changed the function prototypes to get locate_item_list objects
instead of num_items/items.
|
|
|
|
|
| |
Instead of passing two parameters around (number of items, array of
items), combine both in a variable size struct.
|
|
|
|
|
| |
The declaration initialized only the first element. Initialize the
whole array with memset() instead.
|
|
|
|
| |
Use the C99 bool type instead of integer values (1/0 or 0/-1).
|
|
|
|
| |
Renamed functions and variables.
|
|
|
|
| |
Fix a typo in one of the previous patches.
|
|
|
|
| |
Now playlist.c does not contain any protocol specific code anymore.
|
|
|
|
| |
No CamelCase and no typedefs.
|
|
|
|
|
| |
Replaced several wrapper functions from playlist.c, and make command.c
use the queue print functions directly.
|
|
|
|
|
| |
To allow code outside playlist.c to access the "queue" object,
provide a function which returns a const pointer.
|
|
|
|
| |
No typedefs.
|
|
|
|
| |
Moved the 2 remaining global variables into the playlist struct.
|
|
|
|
|
| |
alternative settings must be set before the file
is loaded, otherwise they won't be respected.
|
|
|
|
|
| |
Argument cmd of function command_available() is not used if mpd was
configured without sqlite.
|
|
|
|
|
| |
In the return value of the "commands" command, don't list the
"sticker" command if no sticker file is configured.
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
song_id_to_position() is only a wrapper for queue_id_to_position().
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
Removed unused includes.
|
|
|
|
|
| |
Create a new library which saves/loads the queue to/from the state
file.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Moved protocol printing functions which operate on the queue to
queue_print.c.
|
|
|
|
| |
The LocateTagItem objects are not modified.
|
|
|
|
| |
swapSongs() is only a wrapper for queue_swap().
|
|
|
|
|
| |
When you delete a song from the playlist which was paused, MPD forgot
that it was paused and started playing the next song.
|