Max Kellermann
427dd81678
client: added assertions on channel!=NULL
...
I'm hunting down a bug where client->channel==NULL during I/O
operations. These new assertions help avoid this kind of bug in the
future.
2009-06-04 08:42:02 +02:00
Max Kellermann
ed475718e6
decoder_plugin: corrected outdated API documentation
2009-06-04 08:22:43 +02:00
Max Kellermann
70d7c79546
conf: make config_param.num_block_params unsigned
2009-06-03 06:55:09 +02:00
Max Kellermann
ddc2694419
conf: eliminated CamelCase
...
Renamed all remaining CamelCase functions.
2009-06-03 06:55:04 +02:00
Max Kellermann
9ee53bc76e
player_thread: check pipe size again before exiting
...
When the decoder is finished, break out of the player loop only after
another player.pipe check. We did check the pipe size a few lines
above, but that check was kind of racy.
2009-06-02 08:40:28 +02:00
Max Kellermann
aa7f5dec87
player_thread: don't leak empty music_chunks
...
When a music_chunk only contains a tag but no PCM data, play_chunk()
returns true without freeing the chunk. The caller now assumes that
the chunk is moved into some music_pipe and does not bother to free it
either.
2009-06-02 08:40:28 +02:00
Max Kellermann
1800bde303
player_thread: reinitialize music_buffer in !NDEBUG
...
To check for leaked music_chunk objects, free the music buffer on
CLOSE_AUDIO. This invokes an assertion check which ensures that all
chunks have been returned to the buffer.
2009-05-29 23:34:51 +02:00
Max Kellermann
a90c4e5184
output_all: explicitly return "true" from audio_output_all_play()
...
Instead of returning the local variable "ret" which is always true at
this point, hard-code the "true" return value, because that might be
more readable.
2009-05-29 23:04:45 +02:00
Mathieu Rochette
0dedfe7ddc
input/file: log message on error
...
If a file is removed the library, next time mpd will try to play it it
will result in an error 'ERROR: problems decoding some/file.ogg'.
Nothing is written in log files (verbose mode or not)
[mk: append strerror(errno)]
2009-05-28 23:46:19 +02:00
Max Kellermann
535da8b797
volume: changed "default" to "DISABLED" in switch statement
...
Make gcc warn us if we add a new mixer type, and forget to add a new
"case" line.
2009-05-28 23:39:51 +02:00
Max Kellermann
68f1aed452
volume: converted volume_mixer_type to an enum
...
Don't use CPP macros when you can use C enums.
2009-05-28 23:37:26 +02:00
Max Kellermann
a54f14f31d
volume: removed unused macro "VOLUME_MIXER_SOFTWARE_DEFAULT"
2009-05-28 23:34:45 +02:00
Max Kellermann
4e8208717b
playlist: reset "current song" when playlist ends
...
Commit f78cddb4 introduced a regression: when the playlist reached its
end, MPD did not reset the "current song" pointer anymore after stop.
Add a "current = -1" code line.
2009-05-28 23:23:32 +02:00
Max Kellermann
d8ef153729
music_chunk: added more audio_format_valid() assertions
...
Check the validity of the audio_format during write operations.
2009-05-11 17:25:34 +02:00
Max Kellermann
1a9a65b23b
music_pipe: added assertion on chunk->audio_format
...
Always assert that the audio format of the new chunk is valid.
2009-05-11 16:33:48 +02:00
Patrik Weiskircher
7e678d2ba9
latest git, httpd_output_plugin compile fix, mac os x
...
Hello,
While compiling latest git I've received a compile error in the
httpd_output_plugin.
Small patch attached.
Patrik
2009-05-10 21:15:53 +02:00
Max Kellermann
7c13249b59
pcm_resample: fixed typo in libsamplerate runtime check
...
The string comparison should be "!= 0", not "== 0". Ouch.
2009-05-07 12:19:01 +02:00
Max Kellermann
a4c59943d1
player_control: assert that pc.next_song is NULL after seeking
...
The player thread must reset pc.next_song after seeking, even if that
operation has failed. This patch adds an assertion.
2009-05-06 18:46:59 +02:00
Max Kellermann
438f3547cc
player_control: removed pc.error check from pc_seek()
...
The only pc_seek() caller clears the error, rendering the check
useless. Even if the previous PLAY command resulted in a player
error, this check is not very useful.
2009-05-06 18:46:52 +02:00
Max Kellermann
3083df5a5f
player_control: renamed playerSeek(), return bool
...
Renamed playerSeek() to pc_seek() to get rid of CamelCase. Convert
the return value to bool.
2009-05-06 18:35:22 +02:00
Max Kellermann
0935d85c69
tag_id3: added support for the UFID frame
...
If the UFID frame's owner is "http://musicbrainz.org ", assume its
value is the MusicBrainz track id.
2009-05-06 14:42:07 +02:00
Max Kellermann
4818d38677
httpd_output: save the page generated by encoder_tag()
...
Flush the encoder before calling encoder_tag(). The first page
generated by the encoder after sending the tag will be the new
"header" page, which is sent to all HTTP clients when they connect.
This is a little bit specific to the vorbis encoder, but there are no
other encoders which support tags (yet).
2009-05-05 22:51:17 +02:00
Max Kellermann
e55e560d4e
httpd_output: moved code to httpd_output_encoder_to_clients()
...
Moved some code from httpd_output_encode_and_play() into separate
functions httpd_output_broadcast_page() and
httpd_output_encoder_to_clients().
2009-05-05 22:43:28 +02:00
Max Kellermann
9080797025
httpd_output: disable Icy-Metadata when encoder supports tags
...
There's no reason to send both encoder tags and Icy-Metadata to the
client. Let's disable Icy-Metadata when the encoder supports embedded
tags.
2009-05-05 22:41:36 +02:00
Max Kellermann
ebc1d3516c
vorbis_encoder: start a new stream in tag()
...
When a new tag is set, end the current stream and begin a new one.
Use vorbis_analysis_headerout() to write a full ogg header. This
fixes a problem with icecast: after a song change in MPD, icecast
stops forwarding ogg packets to its clients.
2009-05-05 22:40:51 +02:00
Max Kellermann
7875072d38
vorbis_encoder: moved code to vorbis_encoder_headerout()
2009-05-05 22:37:13 +02:00
Max Kellermann
795569208a
httpd_output: assert that tag!=NULL
...
In the tag() method, MPD guarantees that it does not pass tag==NULL.
Converted the runtime check to an assertion.
2009-05-05 22:36:44 +02:00
Max Kellermann
7dcdb2ce39
archive/zip: pass NULL instead of 0 to zzip_dir_open()
...
The second parameter of zzip_dir_open() is a pointer. Pass the NULL
pointer instead of 0 (with implicit conversion at compile time).
2009-05-04 09:46:15 +02:00
Max Kellermann
e710037760
output_init: added option to disable the hardware mixer
...
Added the per-device option "mixer_enabled" which allows users to
disable the hardware mixer of an audio output.
2009-04-28 20:33:06 +02:00
Max Kellermann
61b0835512
command: added "sticker delete" command
2009-04-28 20:25:07 +02:00
Max Kellermann
610940a06d
sticker: added sticker_delete_value()
...
sticker_delete_value() deletes only one value in a sticker, while
the old function sticker_delete() deletes all values.
2009-04-28 20:23:27 +02:00
Max Kellermann
7d9316a52d
song_save: don't call tag_free(NULL)
...
When a song was in the database twice (which shouldn't happen), and
the first song had no tag items, MPD calledd tag_free(NULL). Add a
check to that source location, and an assertion to tag_free().
2009-04-28 19:57:49 +02:00
Max Kellermann
fd81e7e3b6
libsamplerate: use g_ascii_strncasecmp() instead of strncasecmp()
...
strncasecmp() is locale dependent, making it a bad choice for internal
string comparisons.
2009-04-28 09:42:05 +02:00
Max Kellermann
3db834f6b3
command: use g_ascii_strcasecmp() instead of strcasecmp()
...
strcasecmp() is locale dependent, making it a bad choice for internal
string comparisons.
2009-04-28 09:34:03 +02:00
Max Kellermann
b546cf65bc
utils: use g_ascii_strcasecmp() instead of strcasecmp()
...
strcasecmp() is locale dependent, making it a bad choice for internal
string comparisons.
2009-04-28 09:33:44 +02:00
Max Kellermann
d3c93c1c77
tag: use g_ascii_strcasecmp() instead of strcasecmp()
...
strcasecmp() is locale dependent, making it a bad choice for internal
string comparisons.
2009-04-28 09:32:38 +02:00
Max Kellermann
b2924405ae
conf: use g_ascii_strcasecmp() instead of strcasecmp()
...
strcasecmp() is locale dependent, making it a bad choice for internal
string comparisons.
2009-04-28 09:32:09 +02:00
Max Kellermann
b1c177528f
locate: use g_ascii_strcasecmp() instead of strcasecmp()
...
strcasecmp() is locale dependent, making it a bad choice for internal
string comparisons.
2009-04-28 09:31:44 +02:00
Max Kellermann
0edfbc8a5f
input_curl: use g_ascii_strcasecmp() instead of strcasecmp()
...
strcasecmp() is locale dependent, making it a bad choice for internal
string comparisons.
2009-04-28 09:30:12 +02:00
Max Kellermann
c434379d79
mad_decoder: use g_ascii_strcasecmp() instead of strcasecmp()
...
strcasecmp() is locale dependent, making it a bad choice for internal
string comparisons.
2009-04-28 09:29:39 +02:00
Max Kellermann
d5b3dd36fd
mp4ff_decoder: use g_ascii_strcasecmp() instead of strcasecmp()
...
strcasecmp() is locale dependent, making it a bad choice for internal
string comparisons.
2009-04-28 09:29:11 +02:00
Max Kellermann
9038882d95
alsa_mixer: use g_ascii_strcasecmp() instead of strcasecmp()
...
strcasecmp() is locale dependent, making it a bad choice for internal
string comparisons.
2009-04-28 09:28:16 +02:00
Daniel Kahn Gillmor
05dfdfdb39
alsa_mixer: add mixer_index option
...
This allows you to select controls with duplicate names.
2009-04-28 09:15:48 +02:00
Max Kellermann
f4966ba42c
decoder_api: removed dc.pipe assertion from decoder_read()
...
Database update was broken due to the dc.pipe!=NULL assertion. This
assertion is only valid while MPD decodes a song, not during database
update.
2009-04-26 10:57:02 +02:00
Max Kellermann
ecb7f24b01
vorbis_encoder: reinitialize vorbis_dsp_state after flush
...
libvorbis goes into a very long loop if we try to add data after a
flush was invoked by vorbis_analysis_wrote(0). This seems to be a
problem with the internal end-of-stream marker. Thus, we cannot reuse
the vorbis_dsp_state object.
2009-04-25 18:27:39 +02:00
Max Kellermann
3888ef2f55
decoder_control: properly cancel an existing command in dc_stop()
...
When the decoder thread has a pending command, send the STOP command
to cancel this command. Send STOP again if the decoder thread is
still running after that, just in case the decoder thread has executed
the previous command (which was overwritten).
2009-04-25 15:19:01 +02:00
Max Kellermann
ceb00f787e
decoder: added assertions on dc.pipe
...
dc.pipe must be non-NULL while the decoder thread is running. Ensure
that with a load of assertions.
2009-04-25 15:07:22 +02:00
Max Kellermann
d01d1ccad2
client: use GTimer to track timeouts
2009-04-25 14:16:24 +02:00
Max Kellermann
616dc9d465
playlist_control: use GTimer in previousSongInPlaylist()
...
To determine whether to rewind the current song or to go to the
previous song, use a GTimer instead of manually diffing time(NULL).
2009-04-25 14:08:31 +02:00
Max Kellermann
d2010c0289
pulse_mixer: use PULSE's mainloop lock instead of GMutex
...
Using two different kinds of locks may result in a race condition with
a deadlock. The libpulse callbacks need no locks at all, because the
mainloop object can be assumed to be already locked.
2009-04-25 13:53:15 +02:00