Max Kellermann
fd948571f8
music_pipe: added functions music_pipe_write() and music_pipe_expand()
...
This new API gives the caller a writable buffer to the music pipe
chunk. This may allow the caller to eliminate several buffer copies,
because it may manipulate the returned buffer, until it calls
music_pipe_expand().
2009-01-17 13:09:29 +01:00
Max Kellermann
d83eff80a5
oggvorbis: disable seeking on remote songs
...
When libvorbis knows that a song is seekable, it seeks around like
crazy in the file before starting to decode it. This is very
expensive on remote HTTP resources, and delays MPD for 10 or 20
seconds.
This patch disables seeking on remote songs, because the advantages of
quickly playing a song seem to weigh more than the theoretical ability
of seeking for most MPD users. If users feel this feature is needed,
we will make a configuration option for that.
2009-01-17 11:46:31 +01:00
Max Kellermann
da6f8c270a
decoder_api: added assertion on partial frames
...
Decoder plugins must not send partial frames.
2009-01-16 18:53:32 +01:00
Max Kellermann
953b258e5e
pcm_resample_fallback: corrected the sample calculation
...
Due to rounding errors, it was possible that the fallback resampler
returned partial frames.
2009-01-16 18:52:01 +01:00
Max Kellermann
285a741b27
playlist: don't store getBoolConfigParam() in a bool
...
getBoolConfigParam() returns an int. It is not possible to check for
CONF_BOOL_UNSET after it has been assigned to a bool; use a temporary
int value for that.
2009-01-16 17:11:18 +01:00
Max Kellermann
2a7d99702f
listen: explicitly include sys/socket.h
2009-01-16 17:11:18 +01:00
Max Kellermann
b19a8505f4
player_control: fix shadow warning with older gcc
...
Older gcc versions complained about shadowed parameters in prototypes.
2009-01-16 17:11:18 +01:00
Max Kellermann
106bfaa726
oss: evaluate the oss_open() return value properly
...
It returns bool, not int.
2009-01-16 17:11:18 +01:00
Max Kellermann
b12b5130c9
mixer: check param==NULL in the alsa and oss mixer code
...
When MPD starts without audio output configuration, the "param"
variable is NULL. This triggers a segmentation fault in both mixer
plugins.
2009-01-16 17:11:18 +01:00
Qball Cow
b533307d6f
Enable wav file streaming for ffmpeg input plugin
2009-01-16 17:11:16 +01:00
Rasmus Steinke
3e87e4f3ab
flac: map "Album Artist" to "AlbumArtist"
...
This patch allows mpd to recognise the albumartist tag in the way
foobar2000 and others write it to files.
2009-01-15 22:45:29 +01:00
Max Kellermann
9cc373d62d
flac: splitted flac_copy_vorbis_comment()
...
Splitted flac_copy_vorbis_comment() into flac_copy_comment() and
flac_copy_comment().
2009-01-15 22:45:28 +01:00
Max Kellermann
0dec3f787f
flac: moved code to flac_comment_value()
...
Simplify flac_copy_vorbis_comment() by moving the comment
identification code out.
2009-01-15 22:44:21 +01:00
Max Kellermann
f30adc3526
flac: always allocate tag object
...
Free the tag object when it turns out to be empty. This simplifies
several functions and APIs.
2009-01-15 22:43:39 +01:00
Max Kellermann
ccea365494
tag: added tag_is_defined()
...
tag_is_defined() checks whether there is any information in the tag
object.
2009-01-15 22:00:26 +01:00
Max Kellermann
15435b09af
flac: use bool instead of int
2009-01-15 19:57:57 +01:00
Max Kellermann
8307dd3e87
flac: removed "vorbis_comment_found" flag
...
Use tag_is_empty() instead.
2009-01-15 19:53:07 +01:00
Max Kellermann
86dc79293f
flac: no CamelCase
...
Renamed types, functions, variables.
2009-01-15 19:50:28 +01:00
Max Kellermann
a7461dc27d
input_curl: don't call input_curl_select() when already at EOF
...
Calling input_curl_select() after EOF has been reached causes an
assertion failure. This can happen if the HTTP response is empty.
Check c->eof before calling input_curl_select().
2009-01-15 16:16:57 +01:00
Max Kellermann
f1790fc8bf
input_curl: set "ready" flag on EOF
...
Set the "ready" flag for empty resources.
2009-01-15 16:16:55 +01:00
Max Kellermann
fa3899f7b0
input_curl: call curl_multi_info_read() in constructor
...
To check for early connect failures, call curl_multi_info_read() in
the constructor input_curl_open(). This fixes an assertion failure.
2009-01-15 16:16:53 +01:00
Max Kellermann
08e18f7070
input_curl: added fallback for g_queue_clear()
...
g_queue_clear() was introduced in GLib 2.14. Add a macro hack for
older GLib versions to emulate it.
2009-01-15 09:20:01 +01:00
Max Kellermann
29baf0c190
log, pcm_convert: added return statements after g_error()
...
gcc doesn't know that g_error() never returns. Work around the gcc
warning.
2009-01-15 09:17:06 +01:00
Max Kellermann
2151e2ea53
mapper: check if g_get_user_special_dir() is supported by GLib
...
g_get_user_special_dir() was introduced with GLib 2.14. Don't use it
in older versions.
2009-01-15 09:16:20 +01:00
Max Kellermann
6139174d81
pcm_convert: removed unused variable "dest_size"
...
dest_size is only used in an assertion. Remove its declaration and
move the formula into the assertion.
2009-01-15 08:35:58 +01:00
Max Kellermann
8fe867c71d
decoder_api: added G_GNUC_UNUSED attribute to decoder_initialized()
...
In NDEBUG, the parameter "decoder" is not used.
2009-01-15 08:33:32 +01:00
Max Kellermann
5232f05470
listen: don't compile ipv6Supported() if !HAVE_IPV6
...
The function ipv6Supported() is not used at all when IPv6 support was
disabled at compile time.
2009-01-15 08:33:32 +01:00
Rasmus Steinke
9b0ce18144
oggvorbis: map "Album Artist" to "AlbumArtist"
...
This patch allows mpd to recognise the albumartist tag in the way foobar2000
and others write it to files.
2009-01-15 06:51:58 +01:00
Max Kellermann
9e55a08d79
songvec: sort songs by disc and track number
...
Sorting songs by file name does not make much sense. Most of the
time, users want to add songs in track order to the playlist.
2009-01-15 00:22:30 +01:00
Max Kellermann
2fad578376
tag: added tag_get_value()
2009-01-15 00:21:08 +01:00
Max Kellermann
4847bbaad3
dirvec, songvec: sort using g_utf8_collate()
...
Path names in the directory and song structs are always encoded in
UTF-8. Don't use strcmp(), it cannot handle UTF-8 characters
properly. Use GLib's UTF-8 aware g_utf8_collate() function for that.
2009-01-15 00:09:18 +01:00
Antoine Beaupré
b7fe09fa52
shout: enlarge buffer size to 32 kB
...
I was having problems with shoutcast stream outputs before applying
the attached patch, which enlarges the shoutcast output
buffer. Ideally, this should be configurable, but this resolves the
issue for my needs.
2009-01-14 23:28:26 +01:00
Max Kellermann
283c2621f3
oggvorbis: use g_ascii_strncasecmp() instead of strncasecmp()
...
Don't depend on the daemon's locale settings. Comment names are
ASCII.
2009-01-14 23:23:05 +01:00
Max Kellermann
f353bf77ba
oggvorbis: moved tag look into vorbis_parse_comment()
...
vorbis_parse_comment() should be a function which converts one comment
to a tag item. It should do everything required to do the conversion,
including looping over all possible tag types.
2009-01-14 23:21:45 +01:00
Max Kellermann
69b033757f
oggvorbis: moved code to vorbis_copy_comment()
2009-01-14 23:15:14 +01:00
Max Kellermann
25cf333355
oggvorbis: use vorbis_comment_value() in vorbis_parse_comment()
...
Eliminate some duplicate code.
2009-01-14 23:09:36 +01:00
Max Kellermann
5a26c949bb
oggvorbis: always allocate a tag object
...
Always allocate a new tag object before parsing the vorbis comments;
free it when it turns out to be empty. This simplifies the code a
bit.
2009-01-14 23:09:31 +01:00
Max Kellermann
b5cadc9c04
oggvorbis: no CamelCase
...
Renamed functions and variables.
2009-01-14 23:09:02 +01:00
Max Kellermann
b8e06d414a
oggvorbis: use bool
...
Make ogg_parseCommentAddToTag() return bool instead of unsigned int.
2009-01-14 22:51:11 +01:00
Daniele Sluijters
ca42f01427
tag_id3: added support for the "album artist" tag
...
Read the id3 tags "TPE2" and "TSO2" into the "album artist" tag.
2009-01-14 22:38:55 +01:00
Jérôme Quelin
ae5517b0b3
allow ~/.mpd/mpd.conf as alternate config file
...
mpd uses some additional files to work, such as pid_file, state_file,
db_file, etc. when running mpd as non-root user, it is often that those
files end in ~/.mpd
in that case, we end up with 2 entries in a user's home, .mpdconf and
.mpd - which clutters homedirs.
this patch allows ~/.mpd/mpd.conf as an alternative to ~/.mpdconf,
allowing for a cleaner homedir
2009-01-14 14:31:55 +01:00
Max Kellermann
642b861526
song_save: don't fail on empty tag values
...
If a tag value is an empty string, the space after the colon was
removed by g_strchomp(). Fix this by removing the space check and
using g_strchug() on the return value.
2009-01-14 13:44:14 +01:00
Max Kellermann
3c6a85d8f7
song_save: return value pointer from matchesAnMpdTagItemKey()
...
The matchesAnMpdTagItemKey() API becomes more powerful and flexible if
the return value is the value pointer instead of a boolean. It also
removes (invalid and dangerous) assumptions about the string from its
caller.
2009-01-14 13:43:57 +01:00
Max Kellermann
7cc9ba45a9
song_save: itemType is "enum tag_type", not "int"
2009-01-14 13:38:47 +01:00
Max Kellermann
2c540ee8a4
playlist: safely search the playlist for deleted song
...
When a song file is deleted during database update, all pointers to it
must be removed from the playlist. The "for" loop in
deleteASongFromPlaylist() did not deal with multiple copies of the
deleted song properly, and left instances of the (to-be-invalidated)
pointer in. Fix this by reversing the loop.
2009-01-14 11:42:45 +01:00
Max Kellermann
2af1742fcf
tag: added core support for the "album artist" tag
...
Added TAG_ITEM_ALBUM_ARTIST.
With this patch, MPD should be able to read the (inofficial)
"ALBUMARTIST" Vorbis comment. Implementations in other decoder
plugins will follow soon.
2009-01-13 23:43:20 +01:00
Max Kellermann
1452717459
song_save: check for colon and space when loading a tag
...
matchesAnMpdTagItemKey() broke when two tag items had the same prefix,
because it did not check if the tag name ended after the prefix. Add
a check for the colon and the space after the tag name.
2009-01-13 23:43:16 +01:00
Joe Milbourn
45598d50e3
input_curl: honour http_proxy_* config directives
...
If http_proxy_{host, port, user, password} are provided in mpd.conf
they are not passed on to libcurl. As a result mpd cannot stream from
behind an http proxy.
The attached patch `http_proxy.patch` makes the relevant calls to
curl_easy_setopt(...) for all proxy configuration parameters, but is
only tested for host and port.
2009-01-13 22:57:05 +01:00
Max Kellermann
18cb34700e
daemon: don't check the setsid() return value
...
There is only one valid error condition for setsid(): when the current
process is already the process group leader. This is non-critical.
2009-01-13 21:45:44 +01:00
Max Kellermann
2532129755
daemon: don't fork twice to daemonize
...
To detach from the parent process, fork once and make the old process
exit. No need to do that twice.
2009-01-13 21:44:42 +01:00
Max Kellermann
d8fc8ca7ba
playlist: implement Fisher-Yates shuffle properly
...
MPD's shuffling algorithm was not implemented well: it considers songs
which were already swapped, making it somewhat non-random.
Fix the Fisher-Yates shuffle algorithm by passing the proper bounds to
the PRNG.
2009-01-13 21:25:19 +01:00
Max Kellermann
e7c7e652a3
input_curl: use select() to eliminate busy loop during connect
...
When decoder_run_song() (decoder_thread.c) waits for the input stream
to become ready, it did that in a busy loop. Add a select() call to
input_curl_buffer() during connect/handshake (i.e. before the first
chunk of body data was received), to let the CPU relax.
2009-01-13 19:30:34 +01:00
Max Kellermann
d82061b7ff
decoder_api: don't ignore DECODE_COMMAND_STOP
...
When the decoder thread is waiting for free chunks in the music pipe,
don't ignore the STOP command. Just return dc.command without further
checks.
2009-01-13 18:15:25 +01:00
Max Kellermann
9069a244a4
configure.ac: added the --enable-sqlite option
...
MPD will (optionall) use sqlite databases in the future. Add a
configure option to enable that. There is no code yet to really use
sqlite, so the practical use of this patch is limited.
2009-01-12 09:56:14 +01:00
Max Kellermann
52cf7953ff
Makefile.am: moved C/CPP/LDFLAGS up
2009-01-11 17:41:54 +01:00
Viliam Mateicka
d357f58542
removing mixer_reconfigure memmory leak, fixing configure of alsa and oss mixer (passing parameters)
2009-01-11 17:13:01 +01:00
Max Kellermann
983822ea52
command: restore the "playlistinfo -1" behavior
...
If a range is "-1", display the whole list. This behavior is
undocumented, but some clients rely on it.
2009-01-11 17:11:11 +01:00
Max Kellermann
63d9827c34
main: remove "save_state" timer event on exit
2009-01-10 18:55:43 +01:00
Max Kellermann
0366adddbd
client: remove "expire" event on exit
2009-01-10 18:55:39 +01:00
Max Kellermann
e3c6ad515d
event_pipe: remove the GLib source from the main context
...
Free memory before exiting.
2009-01-10 18:55:36 +01:00
Max Kellermann
ca5432a79b
listen: remove the socket source from the main context
...
Free memory before exiting.
2009-01-10 18:55:33 +01:00
Max Kellermann
d60cf67d19
listen: added struct listen_socket
...
Make the listen socket an object, allowing us to add more fields
later. Convert listenSockets into a simple linked list.
2009-01-10 18:55:29 +01:00
Max Kellermann
a673d6be98
main: deinitialize main_notify on exit
2009-01-10 18:55:28 +01:00
Viliam Mateicka
11c29cccb3
Introducing mixer api
...
This patch tryes to introduce pluggable mixer (struct mixer_plugin) along with some basic infrastructure (mixer_* functions). Instance of mixer (struct mixer) is used in
alsa and oss output plugin
2009-01-10 17:55:38 +01:00
Max Kellermann
8ebe7bfb25
playlist: pass unsigned integers to playlistInfo()
...
A song index cannot be negative. Also require the second parameter to
be valid.
2009-01-10 17:39:49 +01:00
Max Kellermann
b7c4b78846
playlist: exclude end of range
...
In a range "start:end", "end" itself should not be included. Use the
same semantics as other languages implementing ranges, e.g. Python.
2009-01-10 17:05:03 +01:00
Thomas Jansen
6f0781f039
command: playlistinfo now uses a range argument rather than just a song id
...
Loosely based on a patch provided by lesion in bug #1766 . The playlistinfo
command can now retrieve ranges of the playlist. The new argument indicates
which entry is the last one that will be displayed. The number of displayed
entries may be smaller than expected if the end of the playlist is reached.
Previous usage:
playlistinfo [start]
New usage:
playlistinfo [start[:end]]
2009-01-10 16:50:34 +01:00
Thomas Jansen
8ed3cf3e6b
command: add a parser for range arguments
...
A range argument looks like start[:end] and is used to specify the entries
of a list that should be returned (rather than the whole list).
2009-01-10 16:48:12 +01:00
Max Kellermann
5e93d3682f
added missing explicit config.h includes
2009-01-08 21:37:02 +01:00
Max Kellermann
1c2f24dfc6
mapper: use directory_is_root() instead of isRootDirectory()
2009-01-08 21:29:30 +01:00
Max Kellermann
f0b865b4ca
path: include cleanup
2009-01-08 21:29:29 +01:00
Max Kellermann
c232ea10ed
update: removed one more stack buffer
2009-01-08 21:29:21 +01:00
Max Kellermann
5ed5aa99ac
path: allocate buffer in fs_charset conversion functions
...
Don't use fixed static buffers. GLib allocates a new string for us
anyway, let's just return this one instead of copying it.
2009-01-08 21:20:46 +01:00
Max Kellermann
f0980283bc
update: include config.h, fix archive code
...
The archive code was disabled, because config.h was not included and
thus ENABLE_ARCHIVE was not defined.
2009-01-08 21:20:41 +01:00
Stepan Pologov
7a9a1e3e31
mapper: re-add character set conversion in map_uri_fs()
2009-01-08 17:29:08 +01:00
Max Kellermann
628866a065
update: save the database even if it is empty
...
Save an empty database, even if the music directory is empty.
2009-01-08 07:36:40 +01:00
Max Kellermann
bb08679a70
pcm_resample: use pcm_buffer (2/2)
...
Use the PCM buffer library for the libsamplerate output buffer.
2009-01-08 00:47:04 +01:00
Max Kellermann
2a83138913
pcm_resample: use pcm_buffer (1/2)
...
Return a temporary buffer from pcm_resample_*() and pcm_convert().
2009-01-08 00:46:38 +01:00
Max Kellermann
aab85577bf
pcm_channels: use pcm_buffer
...
Replace a "static" buffer with the PCM buffer library.
2009-01-07 23:56:35 +01:00
Max Kellermann
5fe7e3bc14
pcm_format: use the pcm_buffer library
...
Replace a "static" buffer with the PCM buffer library.
2009-01-07 23:56:34 +01:00
Max Kellermann
954c2b5a25
pcm_buffer: new library for temporary buffers
...
This library allocates temporary buffers for storing PCM conversion
results. It should replace all those "static" buffer variables which
are racy and never freed.
2009-01-07 23:56:30 +01:00
Max Kellermann
bf058f978a
output: join the output thread after sending the KILL command
...
Be sure that the output thread has quite before we start destructing
the output object.
2009-01-07 23:55:13 +01:00
Max Kellermann
405c102c17
output: deinitialize notify object
...
Free memory allocated by the notify object (GMutex, GCond) when it's
not used by the output object anymore.
2009-01-07 23:53:28 +01:00
Max Kellermann
97ae4a499a
mapper: don't allocate music_dir twice
2009-01-07 23:53:28 +01:00
Max Kellermann
7f34e9410e
pcm: added pcm_convert_deinit(), pcm_resample_deinit()
...
Free memory allocated by libsamplerate when the output or the decoder
is closed.
2009-01-07 22:20:30 +01:00
Max Kellermann
97b844ec72
pcm_volume: changed PCM_VOLUME_1 to 1024
...
1024 is 2^10, and allows gcc to use bit shift operations instead of
multiplication / division.
2009-01-07 21:40:35 +01:00
Max Kellermann
04a2138b33
pcm: pass void pointers to PCM functions
...
In generic PCM functions allowing all sample formats, pass a void
pointer instead of a char pointer.
2009-01-07 19:00:02 +01:00
Max Kellermann
bb01016400
Makefile.am: added mixer_api.h to mpd_headers
2009-01-07 18:55:26 +01:00
Max Kellermann
b40428b3fd
pcm_utils: moved conversion code to pcm_convert.c
...
All what's left in pcm_utils.h is the pcm_range() utility function,
which is only used internally by pcm_volume and pcm_mix.
2009-01-07 18:53:36 +01:00
Max Kellermann
8b19c74e8e
pcm_format: pass struct pcm_dither_24 to pcm_convert_to_16()
...
The function does not need the full pcm_convert_state struct.
2009-01-07 18:19:22 +01:00
Max Kellermann
df30a29391
pcm_utils: moved code to pcm_format.c
...
Moved all code which converts the sample format to a separate library.
2009-01-07 18:19:09 +01:00
Max Kellermann
6768581c41
pcm_volume: rename pcm_dither() to pcm_volume_dither()
2009-01-07 18:08:26 +01:00
Max Kellermann
b7b5e3f9c3
pcm_prng: renamed prng() to pcm_prng()
2009-01-07 18:07:19 +01:00
Max Kellermann
3fd1fa31ca
pcm_utils: moved code to pcm_mix.c
...
Moved the software mixing code (used by crossfading) to a separate
library.
2009-01-07 18:06:22 +01:00
Max Kellermann
9d0579996c
pcm_utils: moved code to pcm_volume.c
...
Moved the software volume code to a separate library.
2009-01-07 18:05:38 +01:00
Max Kellermann
e8c323ed7e
pcm_utils: export pcm_range()
...
We are going to split the pcm_utils.c library, and pcm_range() will be
useful for several sub libraries.
2009-01-07 18:03:53 +01:00
Max Kellermann
9cb76856c0
removed dlist.h
...
Get rid of the non-portable Linux list library, part III (final).
2009-01-07 16:31:47 +01:00
Max Kellermann
a4a8ac0cc3
curl: use GQueue instead of dlist.h for buffer list
...
Get rid of the non-portable Linux list library, part II.
2009-01-07 16:30:43 +01:00
Max Kellermann
fa503e31e7
client: use GList instead of dlist.h
...
Get rid of the non-portable Linux list library, part I.
2009-01-07 16:30:40 +01:00
Max Kellermann
91dfeff4b9
input_curl: disable "seekable" when icy-metadata is enabled
...
Fix a typo in the icy-metadata patch.
2009-01-07 10:31:30 +01:00
Max Kellermann
493f661fa4
locate: fix strcmp() return value check
...
Yesterday's patch set changed tagItemFoundAndMatches() and moved the
strcmp() return value into a bool, but forgot to add the ==0 check.
2009-01-05 12:50:04 +01:00
Max Kellermann
d9c2960a55
fix G_BYTE_ORDER check
...
"#ifdef G_BYTE_ORDER == G_BIG_ENDIAN" cannot work, of course.
2009-01-05 12:40:57 +01:00
Max Kellermann
0fb21e67ef
configure.ac: use AC_CHECK_HEADERS to check for locale.h
...
AC_CHECK_HEADERS defines HAVE_LOCALE_H, so we don't have to manually
define HAVE_LOCALE.
2009-01-05 09:31:09 +01:00
Max Kellermann
ac0fe98ffb
use GLib byte order macros
2009-01-05 08:17:22 +01:00
Max Kellermann
3516d8fc1d
tag: allocate space for null terminator in clear_non_printable()
...
Use g_strndup() instead of g_memdup().
2009-01-04 21:24:22 +01:00
Max Kellermann
200ef56d4d
database: use stdbool
...
Make db_load(), db_save() and db_check() return bool instead of int.
2009-01-04 21:18:40 +01:00
Max Kellermann
82166b715c
database: db_init() initializes library, does not update
...
For updating the database, directory_update_init() should be called
explicitly.
2009-01-04 21:18:16 +01:00
Max Kellermann
6acba73509
stats: added stats_update()
2009-01-04 20:57:06 +01:00
Max Kellermann
5c477f6067
removed the "condition" library
...
It's unused.
2009-01-04 20:42:53 +01:00
Max Kellermann
60f809b331
update: use notify.h instead of condition.h
...
The notify library is easier to use, and has no disadvantages.
2009-01-04 20:42:43 +01:00
Max Kellermann
21173ea4a9
event_pipe: removed the unused function event_pipe_wait()
2009-01-04 20:32:45 +01:00
Max Kellermann
e4a53df7db
don't exit after --create-db
...
Start the daemon after --create-db. This makes --create-db a flag
which discards the old database and starts with a fresh one.
2009-01-04 20:31:23 +01:00
Max Kellermann
6fb8c54939
update: refresh stats when database update is finished
2009-01-04 20:30:27 +01:00
Max Kellermann
a9bd64b1dd
update: splitted reap_update_task()
...
Handle the DELETE and UPDATE events in separate callbacks:
song_delete_event() safely deletes a song, and update_finished_event()
is called when database update is complete.
2009-01-04 20:30:23 +01:00
Max Kellermann
5e6ac50583
initialize GError pointers
...
GLib mandates that you initialize all GError objects with NULL prior
to passing it.
2009-01-04 19:51:54 +01:00
Max Kellermann
530f0b71de
path, tag: don't allocate GError for charset conversion
...
Pass NULL instead of &error to g_convert(). We're not interested in
the error object.
2009-01-04 19:50:22 +01:00
Max Kellermann
da69382273
path: removed pfx_dir()
...
Use GLib's g_build_filename() instead of pfx_dir().
2009-01-04 19:37:19 +01:00
Viliam Mateicka
1a04e57168
renaming mixer.h to mixer_api.h
2009-01-04 19:15:18 +01:00
Max Kellermann
fed719197c
song: allocate the result of song_get_url()
2009-01-04 19:09:34 +01:00
Max Kellermann
ea8ae68e6f
directory: added directory_is_root()
...
directory_is_root() is cheaper than
isRootDirectory(directory_get_path()).
2009-01-04 19:08:52 +01:00
Max Kellermann
923d2c966f
mapper: allocate the result of map_fs_to_utf8()
2009-01-04 18:59:47 +01:00
Max Kellermann
8c5470a3db
playlist: log errors during loadPlaylist()
...
Don't call command_error() if loading a song from the playlist fails.
This may result in assertion failures, since command_error() may be
called more than once.
2009-01-04 18:59:32 +01:00
Max Kellermann
49ac6fa996
playlist: use GLib logging
2009-01-04 18:17:37 +01:00
Max Kellermann
45597cc571
ls: renamed functions, no CamelCase
2009-01-04 17:46:42 +01:00
Max Kellermann
6a008b52d1
update: removed struct delete_data
...
The struct delete_data has only one member left and can be eliminated.
2009-01-04 17:28:34 +01:00
Max Kellermann
ff72fff68d
ls: removed hasMusicSuffix() and get_archive_by_suffix()
...
Determine the suffix manually, and use decoder_plugin_from_suffix()
and archive_plugin_from_suffix() instead.
This way, song_file_update_inarchive() can be optimized: it does not
have to translate its path.
2009-01-04 17:26:22 +01:00
Max Kellermann
d6b229e35c
update: moved code to update_regular_file()
2009-01-04 17:26:18 +01:00
Max Kellermann
8a562c9c71
song: removed duplicate '\n' check
...
Newline characters are already checked in skip_path() (update.c).
2009-01-04 17:26:15 +01:00
Max Kellermann
77d3643036
ls: include cleanup
...
Don't include headers which are not used. Fix some includes in
decoder_thread.c.
2009-01-04 17:26:12 +01:00
Max Kellermann
599d5820bc
update: moved code to directory_exists(), fix typo
...
Reverse the condition: delete directories which don't exist anymore.
This typo caused a slowdown during partial database update.
2009-01-04 17:26:07 +01:00
Max Kellermann
17d8bdb427
playlist: use uri_has_scheme() instead of isRemoteUrl()
...
For internal checks (i.e. not in command.c), we need to check whether
an URI is in the databse, in the local file system or a remote URI
with a scheme.
2009-01-04 16:23:33 +01:00
Max Kellermann
7d87f71d83
command: check URI scheme in "addid"
...
Check if the URI scheme is supported by MPD, and print an error
message if not. Optimize the checks in "add" and "playlistadd".
2009-01-04 16:22:08 +01:00
Max Kellermann
ef0b328a3c
command: added variable "uri" to command handlers
...
Don't work with argv[1], give it the better name "uri".
2009-01-04 16:19:45 +01:00
Max Kellermann
55b6fd2f0c
player_thread: fix cross-fading duplicate chunk bug
...
When the decoder of the new song is not fast enough, the player thread
has to wait for it for a moment. However the variable "nextChunk" was
reset to -1 during that, making the next loop iteration assume that
cross-fading has not begun yet. This patch overwrites it with "0"
while waiting.
2009-01-04 14:55:02 +01:00
Max Kellermann
96c18e7d15
input_curl: enabled Icy-Metadata support
2009-01-03 23:55:03 +01:00
Max Kellermann
f9e9089f42
added library for parsing icy-metadata
...
The icy_metadata will be used by the curl input_stream implementation.
2009-01-03 23:35:30 +01:00
Max Kellermann
700bd44fda
input_stream: added tag() method
...
The tag() method reads a tag from the stream. This replaces the
meta_name and meta_title attributes.
2009-01-03 23:29:45 +01:00
Max Kellermann
4be479d20c
tag: added function tag_merge()
...
tag_merges() merges the data from two tag objects into one.
2009-01-03 23:28:51 +01:00
Max Kellermann
149f4e10cf
decoder_api: moved code to do_send_tag(), free temporary tag
...
This patch fixes a minor memory leak: when decoder_tag() attempted to
send a merged tag object (created by tag_add_stream_tags()), and was
interrupted by a decoder command, it did not free the temporary merged
tag object.
2009-01-03 23:28:51 +01:00
Max Kellermann
77b32addf1
tag: revert g_strescape() patch
...
Don't use g_strescape(), because it escapes all non-ASCII characters.
Add a new function which clears all non-printable characters, not just
"newline".
2009-01-03 23:13:39 +01:00
Max Kellermann
6d2e4f4e72
player: emit PLAYLIST event when stream tag changes
...
Commit b3e2635a
introduced a regression: when a stream tag was
changed, the playlist version had to be updated. This was done in
syncCurrentPlayerDecodeMetadata(), called by syncPlayerAndPlaylist().
After b3e2635a
, this was not called anymore. Fix this by emitting
PIPE_EVENT_PLAYLIST.
2009-01-03 20:49:51 +01:00
Max Kellermann
38bf81285f
utils: removed unused functions
...
Removed all allocation functions, xwrite(), xread(), ARRAY_SIZE().
Those have been superseded by GLib.
2009-01-03 14:53:42 +01:00
Max Kellermann
b42e10b839
event_pipe: use GLib logging
2009-01-03 14:53:39 +01:00
Max Kellermann
d1c4f261c8
event_pipe: use close() instead of xclose()
...
xclose() aims to be the signal safe version of close(). However during
cleanup, this isn't important.
2009-01-03 14:53:36 +01:00
Max Kellermann
206611e280
conf: use GLib instead of utils.h
2009-01-03 14:53:34 +01:00
Max Kellermann
63e240131e
state_file: use GLib instead of utils.h / stat()
2009-01-03 14:53:29 +01:00
Max Kellermann
dcff29e5aa
state_file: errors are non-fatal in read_state_file()
...
If the state file cannot be read, for whatever reason, don't abort
MPD. The state file isn't _that_ important.
2009-01-03 14:53:23 +01:00
Max Kellermann
2064e8ac4c
songvec, dirvec: use GLib instead of utils.h
2009-01-03 14:53:02 +01:00
Max Kellermann
457301d97b
compress: use GLib instead of utils.h
2009-01-03 14:52:59 +01:00
Max Kellermann
dec4e4ca85
don't include utils.h when it isn't used
2009-01-03 14:52:56 +01:00
Max Kellermann
d17f0f435b
timer: use GLib instead of utils.h
2009-01-03 14:52:53 +01:00
Max Kellermann
03524fb81c
tag: use g_strescape() to eliminate evil characters
...
This always allocates strings on the heap, but we can delete the
stripReturnChar() function now.
2009-01-03 14:52:49 +01:00
Max Kellermann
d342e338db
pcm: use GLib instead of utils.h
2009-01-03 14:52:13 +01:00
Max Kellermann
962f2407d2
pcm_utils: use the custom PRNG for volume dithering
...
Don't use libc's rand() function, because it is slow. Our own trivial
linear congruential generator is good enough for dithering.
2009-01-03 14:51:47 +01:00
Max Kellermann
8ebb3196a8
listen: use GLib instead of utils.h
2009-01-03 14:51:43 +01:00
Max Kellermann
30f75f7f01
tag_id3: use GLib instead of utils.h
2009-01-03 14:51:41 +01:00
Max Kellermann
c24a102c98
tag_pool: use GLib instead of utils.h
2009-01-03 14:51:37 +01:00
Max Kellermann
2189796b96
null, fifo: use GLib instead of utils.h
2009-01-03 14:51:34 +01:00
Max Kellermann
3978b7b1ea
song: use GLib instead of utils.h/log.h
2009-01-03 14:51:30 +01:00
Max Kellermann
2d6f469091
decoder_api: use GLib instead of utils.h
2009-01-03 14:51:28 +01:00
Max Kellermann
2bc0144023
client: use GLib instead of utils.h
2009-01-03 13:44:19 +01:00
Max Kellermann
0eb1166beb
client: convert GREETING to a static string
...
The length of GREETING is known at compile time, don't use strlen().
2009-01-03 13:42:14 +01:00
Max Kellermann
3dc43bb915
strset: use GLib instead of utils.h
2009-01-03 13:38:48 +01:00
Max Kellermann
906ca3e204
dbUtils: use GLib instead of utils.h
2009-01-03 13:37:36 +01:00
Max Kellermann
6ce06a4863
audio: use GLib instead of utils.h
2009-01-03 13:36:20 +01:00
Max Kellermann
019bca2475
listen: use gethostbyname() on WIN32
...
WIN32 has no getaddrinfo(). Fall back to gethostbyname().
2009-01-03 13:23:03 +01:00
Max Kellermann
fa9b5fd10b
event_pipe: use _pipe() on WIN32
...
Windows has no pipe(), it only has _pipe() with two additional
parameters.
2009-01-03 13:22:55 +01:00
Max Kellermann
59067e6a92
ao: use g_strsplit() instead of strtok_r()
...
g_strsplit() is more portable than strtok_r().
2009-01-03 13:20:12 +01:00
Max Kellermann
5b543e8fa6
permission: use g_strsplit() instead of strtok_r()
...
g_strsplit() is more portable than strtok_r().
2009-01-03 13:20:10 +01:00
Max Kellermann
6507bcccd3
permission: parse password without strtok_r()
...
Use strchr()/g_strndup() to extract the password.
2009-01-03 13:20:06 +01:00
Max Kellermann
3cb3baa1e2
log: don't call closelog() on !HAVE_SYSLOG
2009-01-03 13:20:01 +01:00
Max Kellermann
a8dbd8f44f
update: don't check for symlinks on WIN32
...
WIN32 does have some kind of symbolic links (e.g. in NTFS), but the
readlink() function is not available. Disable symlink checking for
now.
2009-01-03 13:19:58 +01:00
Max Kellermann
48aace1859
event_pipe: moved variable "main_task" to main.c
2009-01-03 13:19:01 +01:00
Max Kellermann
96814397ad
sig_handlers: disable on WIN32
...
WIN32 doesn't have POSIX signals. Disable the code. For a complete
port, we will have to implement the WIN32 equivalent.
2009-01-03 12:29:42 +01:00
Max Kellermann
2cf96abcc1
command: fix adding local files on !WIN32
...
Due to a typo, adding local files was always denied.
Disable the second playlist_append_file() invocation on WIN32.
2009-01-03 12:29:42 +01:00
Max Kellermann
7a8ef820a4
list: removed linked list library
...
It's been superseded by GLib's GSList.
2009-01-02 18:41:35 +01:00
Max Kellermann
e943b9bf13
conf: use GLib's GSList library
...
Use GLib's singly-linked list library instead of our custom one.
2009-01-02 18:40:43 +01:00
Max Kellermann
1183236797
alsa: use GLib instead of utils.h
2009-01-02 17:56:08 +01:00
Max Kellermann
051e906d85
jack: use GLib instead of utils.h
2009-01-02 17:23:10 +01:00
Max Kellermann
1fe129330e
jack: duplicate jack_get_ports() return values
...
JACK documentation states: "The caller is responsible for calling
free(3) any non-NULL returned value."
This does not seem to include the array elements. Duplicate them
after jack_get_ports(), and free only the array. Convert
JackData.output_ports to non-const.
2009-01-02 17:23:00 +01:00
Max Kellermann
38fb8a01c1
update: use GLib instead of utils.h
2009-01-02 17:22:56 +01:00
Max Kellermann
4b6d17a670
database: use GLib instead of utils.h
2009-01-02 17:22:54 +01:00
Max Kellermann
9e46c32004
playlist: use GLib instead of utils.h
2009-01-02 17:22:47 +01:00
Max Kellermann
cc4e0a786d
directory: use GLib instead of utils.h
2009-01-02 16:26:19 +01:00
Max Kellermann
8cf9138541
locate: use GLib instead of utils.h
2009-01-02 16:24:16 +01:00
Max Kellermann
e5b8a3b86d
archive: use GLib instead of utils.h
2009-01-02 16:22:40 +01:00
Max Kellermann
cf9bd42416
main: include main.h, fix dependencies
2009-01-02 11:21:33 +01:00
Max Kellermann
272ee5f7d2
event_pipe: replaced PIPE_EVENT_SIGNAL with main_notify
...
There is only one location using PIPE_EVENT_SIGNAL: to synchronize
player_command() with player_command_finished(). Use the "notify"
library instead of the event_pipe here.
2009-01-02 11:20:41 +01:00
Max Kellermann
daf7c3db5a
mapper: allocate the result of map_directory_child_fs(), map_song_fs()
...
Don't use fixed stack buffers.
2009-01-02 10:48:55 +01:00
Max Kellermann
72255d580e
mapper: allocate the result of map_uri_fs(), map_directory_fs()
...
Don't use fixed stack buffers.
2009-01-02 10:48:11 +01:00
Max Kellermann
b2e3b64483
update: use g_file_test() instead of stat()
...
If we want to check whether a file is a directory, use GLib's
g_file_test() instead of stat().
2009-01-02 10:47:31 +01:00
Max Kellermann
38e3220fd4
oggflac: don't use gcc.h
...
Use G_GNUC_UNUSED instead of mpd_unused (which has already been
removed).
2009-01-02 09:50:12 +01:00
Max Kellermann
0c422838a8
playlist: use g_file_test() instead of stat()
...
To find out whether a file exists, use g_file_test() instead of
stat(), because it is more portable and easier to use.
2009-01-01 19:22:07 +01:00
Max Kellermann
80fa9183e4
mapper: allocate playlist path from heap
...
Don't pass a static buffer to map_spl_utf8_to_fs().
2009-01-01 19:17:44 +01:00
Max Kellermann
886ed1b225
mapper: fall back to XDG music directory
...
If no music_directory is configured, fall back to the XDG music
directory, determined by
g_get_user_special_dir(G_USER_DIRECTORY_MUSIC).
2009-01-01 19:07:38 +01:00
Max Kellermann
46aedbae09
removed the signal_check libraries
...
Nobody is using the signal_check library anymore.
This patch also removes the SIGUSR1 handler.
2009-01-01 18:51:38 +01:00
Max Kellermann
2f71b647f4
sig_handlers: use event_pipe for delivering SIGHUP
...
The signal_check library went out of order when we started using the
GLib main loop. Convert the SIGHUP handler to use event_pipe instead.
2009-01-01 18:51:17 +01:00
Max Kellermann
e93136ef0f
event_pipe: added event_pipe_emit_fast()
...
event_pipe_emit_fast() is aimed for use in signal handlers: it doesn't
lock the mutex, and doesn't log on error. That makes it potentially
lossy, but for its intended use, that does not matter.
2009-01-01 18:47:25 +01:00
Max Kellermann
ecb20c5f7e
mixer: renamed mix_* options to mixer_*
...
There is no reason to use the shortcut "mix" instead of "mixer".
2009-01-01 18:36:47 +01:00
Max Kellermann
65f037eb32
cmdline: exit after --version
...
Don't start the daemon when MPD is called with "--version".
2009-01-01 18:26:59 +01:00
Max Kellermann
b3e2635ac1
event_pipe: added pipe_event enum and callbacks
...
Make the event_pipe (formerly main_notify) send/receive a set of
events, with a callback for each one.
The default event PIPE_EVENT_SIGNAL does not have a callback. It
is still there for waking up the main thread, when it is waiting for
the player thread.
2009-01-01 18:22:11 +01:00
Max Kellermann
22bb5a5856
event_pipe: renamed functions from main_notify_* to event_pipe_*
...
Continuing the previous patch.
2009-01-01 18:12:14 +01:00
Max Kellermann
9f5934d95b
main_notify: renamed source to event_pipe.c
...
We are going to migrate away from the concept of notifying the main
thread. There should be events sent to it instead. This patch starts
a series to implement that.
2009-01-01 18:12:00 +01:00
Max Kellermann
99f8dc0168
gcc.h: removed all duplicate macros
...
Removed all macros which are already provided by GLib.
2009-01-01 18:09:28 +01:00
Max Kellermann
17bdcc8bae
decoder plugins: don't include gcc.h
...
Use GLib's G_GNUC_UNUSED instead of gcc.h's mpd_unused.
2009-01-01 18:09:24 +01:00
Max Kellermann
7dfe301b54
output plugins: don't include gcc.h
...
Use GLib's G_GNUC_UNUSED instead of gcc.h's mpd_unused.
2009-01-01 18:08:29 +01:00
Max Kellermann
0734acf392
null: don't include gcc.h
...
Use GLib's G_GNUC_UNUSED instead of macros from gcc.h.
2009-01-01 18:00:46 +01:00
Viliam Mateicka
9a70c4d06d
Moving mixers to audio outputs
2008-12-31 16:46:41 +01:00
Viliam Mateicka
dd9af72a74
exporting functions
2008-12-31 15:10:53 +01:00
Max Kellermann
3cd0b90ff6
client: run client_manager_expire() in an idle event
...
With the GLib main loop, the client manager can install its own event
in case a client is expired. No need for main.c to call
client_manager_expire() manually.
2008-12-31 14:30:03 +01:00
Laszlo Ashin
a12b57e1e9
ls.c: include config.h to have HAVE_CURL here
2008-12-31 13:00:33 +01:00
Max Kellermann
dd0f8e42f3
main_notify: removed lock()/unlock()
...
These functions are not used anymore since we use the GLib main loop.
2008-12-31 00:32:56 +01:00
Max Kellermann
2cdfd93830
client: remember GLib source id
...
Remove the event source from the GMainLoop object in
client_set_expired().
2008-12-31 00:29:27 +01:00
Max Kellermann
d196ffdf3a
sig_handlers: call g_main_loop_quit() in SIGTERM handler
...
We don't need to use asynchronous events to quit MPD, we can just call
g_main_loop_quit() inside the handler.
2008-12-30 19:50:38 +01:00
Max Kellermann
d40cf1652d
main: export the main_loop variable
...
Other libraries may need to access the main_loop reference, to add or
remove events, or to call g_main_loop_quit().
2008-12-30 19:50:22 +01:00
Max Kellermann
a3b0506cfd
sig_handlers: removed SIGCHLD
...
We have no child processes anymore. Remove the SIGCHLD handler.
2008-12-30 19:35:01 +01:00
Max Kellermann
f38aaa2bb7
sig_handlers: don't reload database on SIGHUP
...
The SIGHUP handler was used by the update process to make the main
process re-read the database. We don't need this anymore, since the
update takes place in a thread now.
2008-12-30 19:34:05 +01:00
Max Kellermann
a1434914a7
sig_handlers: removed unused functions
...
Most of these functions were obsoleted when we switched to threaded
MPD.
2008-12-30 19:32:12 +01:00
Max Kellermann
71e7ce5d8e
main: use the GLib main loop
...
This is a rather huge patch, which unfortunately cannot be splitted.
Instead of using our custom ioops.h library, convert everything to use
the GLib main loop.
2008-12-30 19:24:39 +01:00
Max Kellermann
03e650aa9e
main_notify: make the read side of the pipe blocking
...
Currently, both sides of the pipe are blocking, although we do not
need blocking read(). Convert it back to blocking. Eliminate the
select() from wait_main_task().
2008-12-30 19:20:36 +01:00
Max Kellermann
10b5966bf6
main_notify: removed notify object, use only pipe
...
To wake up the main thread, don't attempt to use a GCond/GMutex
(struct notify). This kind of mixed wakeup method has known race
conditions.
The idea behind this patch is: for wakeups which happen while the main
thread is sleeping, use only a pipe. For wakeups which happen while
the main thread is waiting for the player thread, we can later change
to GCond. For now, accept the overhead of using a pipe for the
latter.
In the long run, the main thread will never wait for the player
thread, but will do everything asynchronously.
2008-12-30 19:20:20 +01:00
Max Kellermann
1f0804bdca
listen: don't make the server socket non-blocking
...
There is no point in making the server socket non-blocking. We call
accept() only after select() has notified us about a new connection.
2008-12-30 19:18:59 +01:00
Max Kellermann
6890183c50
utils: port set_nonblocking() to WIN32
...
The new WIN32 version of set_nonblocking() can only deal with sockets,
i.e. it will fail on main_notify.c. On WIN32, we have to reimplement
main_notify.c anyway, so this is not a big deal.
2008-12-30 19:17:20 +01:00
Max Kellermann
bb55ec6b4e
command: don't allow adding local files on WIN32
...
There are no unix sockets on WIN32, and therefore no authentication.
WIN32 might have similar capabilities, but until we implement them,
disable that MPD feature.
2008-12-30 19:14:13 +01:00
Max Kellermann
7330002960
utils: implement my_usleep() with Sleep() on WIN32
...
Sleep() has only millisecond granularity, but good enough for now.
2008-12-30 19:10:08 +01:00
Max Kellermann
2eaeb65666
listen: include winsock headers on WIN32
...
On Windows, socket declarations reside in winsock.h and ws2tcpip.h.
The POSIX headers are not available.
2008-12-30 19:07:10 +01:00
Max Kellermann
e888af98a2
bonjour: fixed "unused parameter" warnings
...
Add G_GNUC_UNUSED attributes.
2008-12-30 16:45:49 +01:00
Max Kellermann
13867a1e7c
zeroconf: eliminated strlen() usage from initZeroconf()
...
To test if a string is empty, we can just see if the first byte is 0.
No need to include string.h for strlen() here.
2008-12-30 16:45:43 +01:00
Max Kellermann
49fa9708d5
zeroconf: moved code to zeroconf-avahi.c and zeroconf-bonjour.c
...
Moved implementation specific code to their own sources, internal
declarations in zeroconf-internal.h.
2008-12-30 16:43:58 +01:00
Max Kellermann
bbed35822e
zeroconf: fail if avahi service name is invalid
...
If the configured avahi service name is invalid, abort MPD. Don't
fall back to the default service name.
2008-12-30 16:43:58 +01:00
Max Kellermann
e9a3c4ce32
playlist: use GLib's random number generator
...
srandom() and random() are not portable. Use GLib's implementation.
2008-12-30 16:34:32 +01:00
Max Kellermann
cdf1eaeb2c
daemon: simplified daemonize_close_stdin()
...
Don't bother to call fstat() or isatty() on STDIN_FILENO.
2008-12-30 16:28:18 +01:00
Max Kellermann
6c0f5fc612
listen: moved redirect_stdin() to daemon.c
...
redirect_stdin() is a daemonization function, and disconnecting from
the standard input is always a good idea for MPD.
2008-12-30 16:28:13 +01:00
Max Kellermann
671480814c
main: moved daemonize() to daemon.c
2008-12-30 16:28:07 +01:00
Max Kellermann
d99595c214
listen: eliminated freeAllListenSockets()
...
Merged freeAllListenSockets() into closeAllListenSockets(), because
this is its only caller.
2008-12-30 16:28:00 +01:00
Viliam Mateicka
4cc0caf1af
print supported decoders in --version
2008-12-30 14:17:15 +01:00
Max Kellermann
d38a7967ab
main: disable non-portable code on WIN32
...
Disable changeToUser(), daemonize(), killFromPidFile().
2008-12-29 17:43:00 +01:00
Max Kellermann
509d12ae88
utils: implement parsePath() with g_strdup() on WIN32
...
On WIN32, parsePath() now simply duplicates the input string. There
is currently nothing special we can do here. The old code was not
portable on WIN32.
2008-12-29 17:42:54 +01:00
Max Kellermann
d4638834f8
utils: use g_get_home_dir()
...
Use g_get_home_dir() to get the home directory of the current user.
This will be portable to win32.
2008-12-29 17:42:49 +01:00
Max Kellermann
db849d1eed
utils: make variables more local in parsePath()
...
Declare variables where they are really used.
2008-12-29 17:42:46 +01:00
Max Kellermann
3c9992aead
client: include winsock headers on WIN32
...
On Windows, socket declarations reside in winsock.h and ws2tcpip.h.
The POSIX headers sys/socket.h etc. are not available.
2008-12-29 17:42:43 +01:00
Max Kellermann
274b919966
main: use g_setenv() instead of setenv()
...
Removed the fallback setenv() implementation for solaris.
2008-12-29 17:37:40 +01:00
Max Kellermann
6517126204
log: removed unused logging wrappers
...
Removed GLib logging wrappers which are not used anymore.
2008-12-29 17:35:42 +01:00
Max Kellermann
91be85a307
main: use GLib logging
2008-12-29 17:35:40 +01:00
Max Kellermann
4d3dd1ed2a
path: use GLib logging
2008-12-29 17:32:53 +01:00
Max Kellermann
29500cedff
update: use GLib logging
2008-12-29 17:29:49 +01:00
Max Kellermann
ef308d9644
alsa: use GLib logging
2008-12-29 17:29:42 +01:00
Max Kellermann
74d4ec7fbb
jack: use GLib logging
2008-12-29 17:29:36 +01:00
Max Kellermann
eddf5e1e5e
fifo: use GLib logging
2008-12-29 17:29:31 +01:00
Max Kellermann
409ee38b42
state_file: use GLib logging
2008-12-29 17:29:23 +01:00
Max Kellermann
d4018c9966
volume: use GLib logging
2008-12-29 17:29:18 +01:00
Max Kellermann
e9b96c6e56
player_thread: use GLib logging
2008-12-29 17:29:14 +01:00
Max Kellermann
46bef03e5a
tag_id3: use GLib logging
2008-12-29 17:29:10 +01:00
Max Kellermann
0a9f69eaaa
listen: use GLib logging
2008-12-29 17:29:04 +01:00
Max Kellermann
d6170c30c8
utils: use GLib logging
2008-12-29 17:29:01 +01:00
Max Kellermann
173021e4eb
client: use GLib logging
2008-12-29 17:28:56 +01:00
Max Kellermann
e0fe4eb722
pcm: use GLib logging
2008-12-29 17:28:49 +01:00
Max Kellermann
f4ce43b958
database: use GLib logging
2008-12-29 17:28:37 +01:00
Max Kellermann
3fa5632704
log: automatically append newline
...
If a log message does not include a newline character, append it.
2008-12-29 17:28:34 +01:00
Max Kellermann
95b3430f52
removed os_compat.h
...
Only include headers which are really needed. os_compat.h aimed to
make MPD easily portable, but was never actually made portable.
2008-12-29 17:28:32 +01:00
Max Kellermann
041b8f697b
command: use gmtime() on WIN32
...
gmtime_r() is not available.
2008-12-29 17:28:13 +01:00
Max Kellermann
b5c5a6b4c7
condition: removed cond_timedwait() and cond_signal_async()
...
These methods are unused.
2008-12-29 17:28:09 +01:00
Thomas Jansen
0d8ba194be
tag_id3: strip leading and trailing whitespace from ID3 tags
...
Fix for bug #1491 .
2008-12-29 16:37:41 +01:00
Frank Mulder
a51fada124
mp4: support the writer/composer tag
...
I tried to search for a certain composer in my collection, but only
non-mp4 files showed up. The source code reveals that this tag is not
read. This can be fixed by reading the 'Writer' tag field, in
mp4_plugin.c, in function mp4_load_tag.
I actually tried this, and after compiling with those lines added,
also mp4 (.m4a) files showed up when searching for a composer.
2008-12-29 11:29:01 +01:00
Viliam Mateicka
6ad7be9525
update: fixing empty filenames in archives
2008-12-29 07:26:17 +01:00
Thomas Jansen
c15ac57271
osx_plugin: migrate from pthread to glib threads
2008-12-28 22:09:42 +01:00
Thomas Jansen
36b8968e36
output: migrate from pthread to glib threads
2008-12-28 22:09:42 +01:00
Thomas Jansen
28128dc4e3
tag & tag_pool: migrate from pthread to glib threads
2008-12-28 22:09:42 +01:00
Thomas Jansen
ce5c22f4f4
condition: migrate from pthread to glib threads
2008-12-28 22:09:42 +01:00
Thomas Jansen
248cd50a20
update & main_notify: migrate from pthread to glib threads
2008-12-28 22:09:42 +01:00
Thomas Jansen
195cec505e
player_thread: migrate from pthread to glib threads
2008-12-28 22:09:38 +01:00
Thomas Jansen
c01ad37d3b
decoder_thread: migrate from pthread to glib threads
2008-12-28 22:09:33 +01:00
Thomas Jansen
bfb5657d6d
songvec: migrate from pthread to glib threads
2008-12-28 21:02:42 +01:00
Thomas Jansen
4ed895c799
dirvec: migrate from pthread to glib threads
2008-12-28 21:02:30 +01:00
Thomas Jansen
8332a70406
idle: migrate from pthread to glib threads
2008-12-28 21:02:14 +01:00
Thomas Jansen
5e3dc6946f
Include <pthread.h> where it is necessary only
2008-12-28 21:02:05 +01:00
Thomas Jansen
f31b4f46e1
Remove xpthread_* wrappers
2008-12-28 21:01:03 +01:00
Max Kellermann
1914e11466
conf: use GLib instead of utils.h/log.h
2008-12-28 19:54:49 +01:00
Max Kellermann
859aac7242
utils: removed myFgets()
...
Replaced myFgets() with fgets() + g_strchomp().
2008-12-28 19:54:49 +01:00
Max Kellermann
2598cdd868
buffer2array: use GLib's g_ascii_isspace()
...
g_ascii_isspace() includes \r and \n. This means that lines from a
text file don't have to be chopped prior to buffer2array().
2008-12-28 19:54:39 +01:00
Max Kellermann
4b3a055ffe
mikmod: use Glib instead of utils.h/log.h
2008-12-28 19:48:53 +01:00
Max Kellermann
4ca02bfcfc
mikmod: convert mod_Data.audio_buffer to a static array
...
Don't do two allocations for the mod_Data structure.
2008-12-28 19:48:53 +01:00
Max Kellermann
7f78ed5b98
log: use GLib logging
2008-12-28 19:48:53 +01:00
Max Kellermann
59cf77bbc8
log: don't keep log file open
...
The log file is duped to STDOUT_FILENO and STDERR_FILENO. No need to
keep another copy of it in out_fd all the time. We only need it once
once in setup_log_output().
2008-12-28 19:48:53 +01:00
Max Kellermann
8fe03b8bce
decoder: terminate decoder thread before MPD cleanup
...
When MPD exits, it should manually free all resources in use, to allow
easy memory leak debugging. Make the decoder thread terminate during
that.
2008-12-28 19:48:53 +01:00
Max Kellermann
c01aa53e6a
log: support syslog()
...
Allow logging to syslog if log_file is configured to "syslog".
2008-12-28 19:48:53 +01:00
Max Kellermann
c6cb611065
log: moved code to log_init_file()
...
Added log_init_file() and log_init_stdout(), preparing for other
logging targets.
2008-12-28 19:48:53 +01:00
Max Kellermann
d70c2e2285
log: merged initLog() and open_log_files().
...
The logging library currently has 3 constructor functions: initLog(),
open_log_files(), setup_log_output(), called in this order. Merged
the first two.
2008-12-28 19:48:53 +01:00
Max Kellermann
caf47f7893
log: moved code to parse_log_level()
2008-12-28 19:48:53 +01:00
Max Kellermann
5d2c59e3f1
log: use the GLogLevelFlags type
...
Declare log_threshold as GLogLevelFlags.
2008-12-28 19:48:53 +01:00
Max Kellermann
2c5885e9c7
log: don't manipulate the umask
...
If the user wants the log files with a specific mode, he has to start
MPD with the correct umask. Don't hard-code that.
This fixes a bug: when log cycling failed, MPD would not restore the
old umask.
2008-12-28 19:48:52 +01:00
Max Kellermann
8e9def1b5a
log: moved code to open_log_file()
...
Merged code from open_log_files() and cycle_log_files().
2008-12-28 19:48:52 +01:00
Max Kellermann
8dc92ad284
log: deprecated "error_file" option
...
Removed the "error_file" option. There is only one log file now. If
a user wants to see only the errors, he should configure a log_level.
2008-12-28 19:48:52 +01:00
Viliam Mateicka
d838a1ad24
decoder: new plugin using modplug library
2008-12-28 17:11:18 +01:00
Pauli Virtanen
65b18644e1
Add RVA2 tag support to MPD
...
This patch adds RVA2 (relative volume adjustment) tag
support to mpd, as a fallback if no replaygain tags are
found. The code is almost directly from madplay (GPL).
RVA2 tags are generated for example by the "normalize" utility.
Updated by: Avuton Olrich <avuton@gmail.com>
2008-12-28 13:02:34 +01:00
Max Kellermann
ed9668f638
notify: use GLib locking
...
Use GLib locking (GMutex, GCond) instead of pthread because GLib is
more portable, e.g. on mingw32.
2008-12-27 20:56:06 +01:00
Max Kellermann
e8c44782d0
output_control: no static "notify" initialization
...
Don't use NOTIFY_INITIALIZER to initialize audio_output_client_notify.
2008-12-27 20:53:52 +01:00
Viliam Mateicka
b2fc0ee274
cmdline: fixed option_no_createdb usage
2008-12-27 20:16:32 +01:00
Max Kellermann
83fc948008
cmdline: use g_build_filename() for ~/.mpdconf
...
Build the path with g_build_filename(). Also use g_get_home_dir() and
g_file_test().
2008-12-27 19:46:43 +01:00
Max Kellermann
f5ff00bba4
cmdline: use GLib's option parser
...
Eliminate duplicated code. The GLib code is much more mature than
MPD's custom parser.
2008-12-27 19:36:03 +01:00
Max Kellermann
357712c8f3
cmdline: use gboolean instead of int
...
Prepare for the migration to the GLib option parser, which uses
gboolean for flags.
2008-12-27 19:35:30 +01:00
Max Kellermann
786bb8cc33
moved command line parser to cmdline.c
2008-12-27 19:03:33 +01:00
Max Kellermann
cc3b6c2f5b
audiofile: don't close onput stream in libaudiofile destroy()
...
The input_stream object should only be closed by the MPD core
(i.e. decoder_thread.c / decoder_run()). A decoder plugin which
attempts to close it will result in a segmentation fault.
2008-12-27 14:34:51 +01:00
Max Kellermann
0fe0425dee
disable archive API without plugins
...
When there are no archive plugins, we do not need the archive API at
all. Drop all its overhead.
2008-12-27 14:33:41 +01:00
Max Kellermann
9220e0edff
Merge branch 'experimental' of git://git.musicpd.org/metyl/mpd
...
Conflicts:
configure.ac
src/ls.h
src/output/shout_plugin.c
2008-12-27 13:34:51 +01:00
Max Kellermann
1bd3cde062
playlist: fix stored playlist modifications with absolute paths
...
When save_absolute_paths_in_playlists was enabled in mpd.conf, MPD
broke all playlists when manipulated using the "playlistdelete"
command. The reason was that map_directory_child_fs() was used, which
doesn't accept slashes in the file name. Use the new map_uri_fs()
function instead.
2008-12-24 22:04:24 +01:00
Max Kellermann
a94e59ca21
stored_playlist: fix integer overflow in length estimation
...
With a large maximum playlist length, the integer multiplication
"playlist_max_length * MPD_PATH_MAX" may overflow. Change that to a
division. This was not a dangerous bug, since it was only used for
a quick estimate.
2008-12-24 17:40:41 +01:00
Max Kellermann
7f98ba24c7
ffmpeg: case AV_NOPTS_VALUE to int64_t
...
The old code casted it to a 32 bit integer, which cut off bits.
AVFormatContext.duration is a int64_t, so use this type.
2008-12-24 11:56:53 +01:00
Max Kellermann
82ef85a309
ffmpeg: don't assign "0" to pointer
...
Use NULL instead. Found by sparse.
2008-12-24 11:49:37 +01:00
Max Kellermann
fefd3d6fb7
Makefile.am: fix sparse invocation
...
Added missing includes.
2008-12-24 11:49:09 +01:00
Max Kellermann
fc723803a4
mp3: "tag" argument is unused when libid3tag is disabled
...
Add G_GNUC_UNUSED attributes.
2008-12-24 11:07:58 +01:00
Max Kellermann
4716ef1014
listen: "port" argument is unused when TCP support is disabled
...
Add a G_GNUC_UNUSED attribute.
2008-12-24 11:07:58 +01:00
Max Kellermann
0d9d82a932
pcm_utils: check pcm_convert()==0
...
It is illegal to pass an empty audio buffer around. pcm_resample()
sometimes seems to result in 0 samples, maybe related to
libsamplerate. To work around that problem, add special checks after
both pcm_convert() invocations. Removed the pcm_resample()==0 checks
from pcm_convert().
2008-12-24 03:08:39 +01:00
Max Kellermann
d2d11d70a8
client: always attempt to flush deferred buffers
...
When a response is very long (e.g. a large playlist > 100k songs),
most of it will end up in the deferred buffers. Filling the deferred
queue is very expensive currently, because a new buffer is allocated
for every client_write() operation. This may lead to long delays, and
the client might give up and disconnect meanwhile. This patch makes
MPD attempt to flush the deferred queue as often as possible, to work
around this problem. Due to the MPD 0.14 code freeze, we should not
optimize the buffering code now.
2008-12-24 03:00:08 +01:00
Viliam Mateicka
d96cda95a1
shout: fixed bad error message printout
2008-12-23 18:05:25 +01:00
Viliam Mateicka
4674d0442a
shout: fixed bad error message printout
2008-12-23 18:00:37 +01:00
Max Kellermann
3b2a752d0e
Merge branch 'http_buffer_remove' of git://git.musicpd.org/avuton/mpd
2008-12-21 19:40:06 +01:00
Avuton Olrich
e75e40085f
Remove obsolete http_buffer* stuff that went away with the new curl backend.
2008-12-20 22:16:02 -08:00
Max Kellermann
bfaaf425c2
log: map log level "SECURE" to GLib's "INFO"
...
Make "secure" a log level different from "default". "secure" should be
right between "default" and "verbose". Map "default" to Glib's
"MESSAGE" log level.
2008-12-20 17:26:49 +01:00
Emanuele Giaquinta
213c021eac
Remove useless statement.
2008-12-17 16:49:33 +01:00
Max Kellermann
5d56b6ced8
player_control: check if errored_song is set
...
getPlayerErrorStr() assumes that pc.errored_song is set when an error
occured. Since the song may have been deleted meanwhile, add a NULL
check.
2008-12-17 16:46:12 +01:00
Max Kellermann
13192546a8
playlist: clear pc.errored_song on delete
...
When a (remote) song is deleted from the playlist, there may still be
a reference to it in pc.errored_song. Clear this reference.
2008-12-17 16:45:49 +01:00
Emanuele Giaquinta
25c04a97d3
Remove useless computation. After the pthread_cond_wait loop there are at least MIN(od->bufferSize, size) free bytes in the buffer. Thus MIN(od->bufferSize - od->len, size) is always equal to MIN(od->bufferSize, size).
2008-12-17 15:56:43 +01:00
Emanuele Giaquinta
c584d6b087
Remove useless statement, curpos is initialized at the beginning of the loop.
2008-12-17 15:56:43 +01:00
Emanuele Giaquinta
c36a6b0aee
Factor computation.
2008-12-17 15:56:43 +01:00
Emanuele Giaquinta
a4f0c7b457
Use MIN.
2008-12-17 15:56:43 +01:00
Emanuele Giaquinta
df80ae86ee
Call CloseComponent after AudioUnitUninitialize.
2008-12-17 15:56:43 +01:00
Viliam Mateicka
37796699cf
archiveapi: archive plugin for ISO files
2008-12-16 21:48:26 +01:00
Viliam Mateicka
ddcf0a4078
archiveapi: archive plugin for ZIP files
2008-12-16 21:46:11 +01:00
Viliam Mateicka
98fd9b7da8
archiveapi: archive plugin for BZ2 files
2008-12-16 21:45:59 +01:00
Viliam Mateicka
77946a901f
update: adding archive updating related code
2008-12-16 21:42:42 +01:00
Viliam Mateicka
455b39fa26
song: adding support for songs in archives
2008-12-16 21:42:42 +01:00
Viliam Mateicka
4d604a7540
ls: adding get_archive_by_suffix() function
2008-12-16 21:42:42 +01:00
Viliam Mateicka
c73ebac4af
new archive api, input_archive stream
2008-12-16 21:42:34 +01:00
Max Kellermann
5aa1afe693
command: reject unsupported URI schemes
...
When a client-specified URI has a scheme which is not supported, do
not try to open it as a local file, but provide a meaningful error
message.
2008-12-16 21:23:29 +01:00
Max Kellermann
c50115f9a2
ls: added uri_has_scheme()
...
uri_has_scheme() checks if an URI contains the sub string "://", which
makes MPD assume that it is a remote URI.
2008-12-16 21:22:10 +01:00
Max Kellermann
e0be4400cf
ls: don't return suffix from parent directory name
...
When a file had no file name extension, getSuffix() could return the
extension of the parent directory (if it had one).
2008-12-16 21:22:08 +01:00
Max Kellermann
b765c62f2f
ls: reimplement getSuffix() with strrchr()
...
The old getSuffix() code was quite wasteful, and can be replaced
completely with strrchr().
2008-12-16 21:20:09 +01:00
Max Kellermann
d0024c077d
ls: use bool
...
Use the C99 "bool" data type instead of "int".
2008-12-16 21:18:33 +01:00
Max Kellermann
1d82edc6d3
ls: make printRemoteUrlHandlers() return void
...
printRemoteUrlHandlers() cannot fail, and does not need a return
value.
2008-12-16 21:18:31 +01:00
Max Kellermann
3287726736
ls: removed isValidRemoteUtf8Url()
...
The function didn't do anything useful, it was just several lines
obfuscating that it was only forwarding isRemoteUrl()'s return value.
2008-12-16 21:15:20 +01:00
Max Kellermann
3d4fb9a9a6
ls: don't include time.h
...
ls.h does not need time.h, do not include it.
2008-12-16 21:05:02 +01:00
Viliam Mateicka
88ab54d3d4
ffmpeg: fixing ffmpeg_send_packet to allow multipackets
2008-12-15 19:37:10 +01:00
Viliam Mateicka
8a412aaa27
ffmpeg: adding APE support
2008-12-15 19:34:58 +01:00
Max Kellermann
dedaf7033b
locate: ignore case when searching in song paths
...
The function strstrSearchTag() used g_utf8_casefold() to generate the
(pseudo-)lowercase version of the song's URL, but it never used the
variable.
2008-12-13 01:54:11 +01:00
Viliam Mateicka
01c591fb84
utils: moving stringFoundInStringArray() from decoder into utils
2008-12-09 17:36:10 +01:00
Max Kellermann
0dab2c5bc1
ao: use 16 bit sample format
...
There have been bug reports on MPD regarding 24 bit output via
libao/esd. The "ao" plugin does not attempt fall back to 16 bit
currently, and thus fails to play 24 bit audio (i.e. all mp3 files).
Make it always use 16 bit samples for now, until more bits are
well-tested.
2008-12-09 07:39:24 +01:00
Max Kellermann
4288cc069a
osx: use 16 bit sample format
...
The OS X output does not seem to support 24 bit audio in the way MPD
implements it currently. Fall back to 16 bit for now, and schedule
24 bit support on OS X for MPD 0.15.
2008-12-08 23:23:37 +01:00
Max Kellermann
a4512d3b9a
osx: use GLib instead of utils.h/log.h
...
One my_usleep() invocation remains, until we find out if we can delete
it.
2008-12-08 23:23:30 +01:00
Max Kellermann
b0f46c2076
osx: don't use void pointer in arithmetic
...
Cast AudioBuffer.mData to a "unsigned char*" before adding "curpos".
This fixes a gcc warning.
2008-12-08 23:23:28 +01:00
Max Kellermann
87f6f57bf6
mp3: declare variables as "enum mp3_action"
...
Variables which hold one of the DECODE_* values should be declared as
"enum mp3_action" instead of "int".
2008-12-08 16:49:19 +01:00
Avuton Olrich
a25b8acd82
update: default to follow all symlinks
...
MPD 0.13 and older followed all symbolic links. Although this can be
a security problem (as it has always been), 0.14 should offer the same
default behaviour as 0.13.
2008-12-08 10:01:20 +01:00
Max Kellermann
5b11d5a332
pcm_utils: always round up resampling buffer size
...
libsamplerate produces cracks in the sound output when the destination
buffer is too small. This is the case when pcm_convert_size() rounds
down. Use ceil(x) instead of floor(0.5+x) there to prevent a buffer
overrun.
2008-12-08 08:58:27 +01:00
Max Kellermann
0128a9e910
stored_playlist: include time.h for the time_t type
...
On some systems, the time_t data type was not present, because
stored_playlist.h didn't include the time.h header directly.
2008-12-04 23:19:31 +01:00
Viliam Mateicka
e61ba50ebd
decoder: audiofile plugin using input stream instead of file
2008-12-03 20:26:08 +01:00
Max Kellermann
6902ff2084
listen: check if AI_ADDRCONFIG is defined
...
AI_ADDRCONFIG is not available on all operating systems. Check if it
is defined in the current build environment.
2008-12-02 10:23:36 +01:00
Max Kellermann
ac0af91912
listen: enable AI_PASSIVE
...
The getaddrinfo() flag AI_PASSIVE should be used when resolving
addresses for the bind() system call.
2008-12-02 10:22:21 +01:00
Thomas Jansen
c06ce44768
replaced mpd_printf etc by G_GNUC_PRINTF
...
We want to remove gcc.h eventually. This takes care of all the G_GNUC_PRINTF
macros.
2008-12-02 03:00:02 +01:00
Thomas Jansen
e6ae40982e
replaced mpd_noreturn by G_GNUC_NORETURN
...
We want to remove gcc.h eventually. This takes care of all the
G_GNUC_NORETURN macros.
2008-12-02 02:42:19 +01:00
Thomas Jansen
c252143d51
replaced mpd_malloc by G_GNUC_MALLOC
...
We want to remove gcc.h eventually. This takes care of all the
G_GNUC_MALLOC macros.
2008-12-02 02:33:24 +01:00
Thomas Jansen
2720585731
replaced mpd_likely/mpd_unlikely by G_LIKELY/G_UNLIKELY
...
We want to remove gcc.h eventually. This takes care of all the
G_LIKELY/G_UNLIKELY macros.
2008-12-02 02:22:43 +01:00
Max Kellermann
4ca24f22f1
alsa: reverted the default buffer_time to 500 ms
...
Commit dd7711d8
removed MPD's default ALSA buffer_time. The result
was a buffer size which was way too small for playing streams on some
sound hardware, and caused skips and distorted sound. Revert the
default to 500 ms.
2008-12-01 22:37:05 +01:00
Max Kellermann
f600f4a256
shout: fixed the lame input buffer allocation
...
"float (*lamebuf)[2] = g_malloc()" does NOT allocate two float*
buffers. The formula is even wrong: it should be applied to LAME's
output buffer, not its input buffer.
Converted "lamebuf" to the two variables "left" and "right", and
allocate them independently with the exact buffer size. Set
right=left if mono output is configured.
2008-11-30 14:25:56 +01:00
Max Kellermann
a7b692a1df
shout_mp3: cast input buffer to int16_t*
...
It's easier to work with an int16_t* pointer here.
2008-11-30 14:21:40 +01:00
Max Kellermann
655ba6a637
input_curl: follow HTTP redirects
...
Follow HTTP redirects, but no more than 5.
2008-11-30 13:06:21 +01:00
Max Kellermann
422c17ceae
input_curl: send a User-Agent header
...
Send "Music Player Daemon " + VERSION as the User-Agent request
header.
2008-11-30 13:06:18 +01:00
Raphaël Rigo
5b089f85fd
update: added options which control symlink behaviour
...
The configuration options "follow_outside_symlinks" and
"follow_inside_symlinks" let the user control whether MPD should
follow symbolic links in the music directory.
[mk: converted variables to "bool"; moved configuration to
update_global_init()]
2008-11-28 10:57:39 +01:00
Max Kellermann
ced4abcd64
update: added update_global_init() and update_global_finish()
...
Those two functions are called when MPD starts and exits. It allows
the update library to perform global initialization and
deinitialization. The implementations are currently empty.
2008-11-27 19:34:54 +01:00
Max Kellermann
bd0653f440
conf: added config_get_bool()
...
In contrast to, getBoolConfigParam(), config_get_bool() properly
returns a "bool" value. In case of "unset", it returns the default
value provided by the caller.
2008-11-27 19:19:34 +01:00
Max Kellermann
910c000954
mp3: use GLib logging
...
Use GLib's g_warning(), ... instead of MPD's deprecated log.h.
2008-11-27 19:19:05 +01:00
Max Kellermann
21dade26aa
input_curl: disable Icy-Metadata
...
input_curl.c does not support parsing shoutcast metadata yet. Disable
the "Icy-Metadata" header for now, since it may cause corruptions in
the stream.
2008-11-25 18:13:15 +01:00
Max Kellermann
d85184256e
main: destroy the save_state timer on exit
...
Make valgrind happier.
2008-11-25 17:55:04 +01:00
Max Kellermann
7918785c78
output: use GLib instead of log.h/util.h
2008-11-25 17:47:46 +01:00
Max Kellermann
0277921e6a
oss: use GLib instead of utils.h/log.h
2008-11-25 17:43:28 +01:00
Max Kellermann
b76f7b769c
mvp: use GLib instead of utils.h/log.h
2008-11-25 17:37:12 +01:00
Max Kellermann
be60ff83f7
shout: use GLib instead of utils.h/log.h
2008-11-25 17:25:41 +01:00
Max Kellermann
125dad7119
shout: don't check HAVE_SHOUT
...
If the shout plugin is disabled, shout_plugin.c isn't compiled at all,
no need to check the macro definition.
2008-11-25 17:19:42 +01:00
Marc Pavot
fd1144145c
player: set elapsed=0 at song change
...
I have found something that looks like a bug in MPD:
- When a song is finished, the next one is played and the 'player'
event is emitted.
- When the client sends the status command just after this event, the
songid is the new one but the 'elapsed' time is not reseted to 0.
This is problem because I have implemented the solution using a timer
on client side to compute the elapsed time but with this bug the
elapsed time continues to be incremented on a new song.
2008-11-25 16:19:53 +01:00
Max Kellermann
c570aa20fa
ao: print error message when ao_open_live() fails
...
When ao_open_live() failed, MPD would ignore the error code in
"errno". Make it print a meaningful error message.
2008-11-25 16:18:06 +01:00
Max Kellermann
423276a384
ao: support all libao error codes
...
The function audioOutputAo_error() did not implement all possible
libao error codes. Support the rest of them, and fall back to
strerror().
2008-11-25 16:17:48 +01:00
Max Kellermann
ffc604498e
ao: use GLib instead of utils.h/log.h
2008-11-25 16:10:01 +01:00
Max Kellermann
bc55d8d78e
decoder: added missing glib.h include
2008-11-25 15:12:00 +01:00
Thomas Jansen
2555176854
tag_id3.h: replaced mpd_unused by G_GNUC_UNUSED
2008-11-24 14:57:30 +01:00
Thomas Jansen
bc74503a69
command.c: replaced mpd_unused by G_GNUC_UNUSED
2008-11-24 14:55:32 +01:00
Thomas Jansen
843ed730c0
client.c: replaced mpd_unused by G_GNUC_UNUSED
2008-11-24 14:48:32 +01:00
Thomas Jansen
b9fefc4564
player_thread.c: replaced mpd_unused by G_GNUC_UNUSED
2008-11-24 14:47:44 +01:00
Thomas Jansen
3742cf3abb
update.c: replaced mpd_unused by G_GNUC_UNUSED
2008-11-24 14:46:10 +01:00
Thomas Jansen
02273d96c3
sig_handlers.c: replaced mpd_unused by G_GNUC_UNUSED
2008-11-24 14:45:32 +01:00
Thomas Jansen
87751ddbd0
pcm_resample_fallback.c: replaced mpd_unused by G_GNUC_UNUSED
2008-11-24 14:44:17 +01:00
Thomas Jansen
34b1a9061e
dbUtils.c: replaced mpd_unused by G_GNUC_UNUSED
2008-11-24 14:42:47 +01:00
Thomas Jansen
3d258504a1
decoder_thread.c: replaced mpd_unused by G_GNUC_UNUSED
2008-11-24 14:41:53 +01:00
Thomas Jansen
f7d995f807
zeroconf.c: replaced mpd_unused by G_GNUC_UNUSED
2008-11-24 14:40:40 +01:00
Thomas Jansen
b31b334ba6
input_file.c: replaced mpd_unused by G_GNUC_UNUSED
2008-11-24 14:33:46 +01:00
Thomas Jansen
f0e621bcdb
input_curl.c: replaced mpd_unused by G_GNUC_UNUSED
2008-11-24 14:33:25 +01:00
Thomas Jansen
7c7b0431fe
decoder_api.c: replaced mpd_unused by G_GNUC_UNUSED
2008-11-24 14:32:53 +01:00
Thomas Jansen
c6a63f1397
main_notify.c: replaced mpd_unused by G_GNUC_UNUSED
2008-11-24 14:32:02 +01:00
Max Kellermann
14e121af90
flac, mpc, ogg, wavpack: include unistd.h for SEEK_SET
...
SEEK_SET is defined by unistd.h. Explicitly include it.
2008-11-24 10:33:08 +01:00
Max Kellermann
acbfba0698
player: disable music_pipe_check_format()
...
The music pipe audio format bugs seem to be fixed (hopefully).
Disable music_pipe_check_format() for now, since it consumes a lot of
CPU cycles.
2008-11-24 09:25:48 +01:00
Max Kellermann
116662e5a9
update: fixed shadow warning on "basename"
...
Renamed the local variable "basename", which shadows the POSIX
function basename().
2008-11-22 14:57:08 +01:00
Max Kellermann
d0779e71ab
command: format strerror() with "%s"
...
We shouldn't pass strerror() where a format string is expected.
2008-11-22 14:57:00 +01:00