aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* use GLIB_CHECK_VERSION()Max Kellermann2009-03-013-4/+4
| | | | | Use GLIB_CHECK_VERSION() instead of manually checking GLIB_MAJOR_VERSION, ...
* volume: throttle access to hardware mixersMax Kellermann2009-02-281-1/+24
| | | | | | On some hardware, reading the mixer value from hardware is an expensive operation, and MPD has to do it for every client. Throttle access to the hardware, cache the result for one second.
* output: use GTimer instead of time_t for reopen after failureMax Kellermann2009-02-286-16/+35
| | | | | | | time() is not a monotonic timer, and MPD might get confused by clock skews. clock_gettime() provides a monotonic clock, but is not portable to non-POSIX systems (i.e. Windows). This patch uses GLib's GTimer API, which aims to be portable.
* output: added option to disable audio outputs by defaultMax Kellermann2009-02-282-1/+2
| | | | | The option "enabled" is on by default. If you specify "enabled no" in an audio_output section, then this device is disabled by default.
* audiofile: removed duplicate decoder_get_command() callsMax Kellermann2009-02-281-12/+16
| | | | | decoder_data() returns a decoder_command, no need to call decoder_get_command() twice after decoder_command().
* audiofile: refuse to play non-seekable filesMax Kellermann2009-02-281-0/+5
| | | | | | | | | If an input_stream is not seekable, libaudiofile fails to play at all: Audio File Library: unrecognized audio file format [error 0] Since we know in advance whether the input_stream is seekable, just refuse to play on a non-seekable stream.
* audiofile: no CamelCaseMax Kellermann2009-02-281-9/+9
| | | | Renamed several variables and a function.
* Merge branch 'master' of git://git.musicpd.org/avuton/mpdMax Kellermann2009-02-281-103/+111
|\
| * configure: don't fail if pipe_output is the only output plugin.Avuton Olrich2009-02-281-0/+1
| |
| * configure: move id3 and lame to 'Other Features'Avuton Olrich2009-02-281-12/+12
| |
| * configure: don't fail if mp4 is the only enabled input plugin.Avuton Olrich2009-02-281-0/+1
| |
| * configure: move the configure status stuff in alphabetical order.Avuton Olrich2009-02-281-105/+105
| |
| * pipe: Fix wording in configure and add configure status.Avuton Olrich2009-02-281-1/+7
| |
* | test: added test program which reads tags from a fileMax Kellermann2009-02-283-1/+183
| |
* | tag: moved APE code to tag_ape.cMax Kellermann2009-02-286-122/+179
|/
* pipe: new audio output plugin which runs a commandMichal Nazarewicz2009-02-286-0/+142
| | | | [mk: adapted to new output plugin API]
* decoder_list: print decoder list with suffixesMax Kellermann2009-02-283-28/+11
| | | | | Print the list of suffixes supported by each decoder, instead of prining a list of all suffixes of all decoders with duplicates.
* listen: allocate sockaddr_storage struct for accept()Max Kellermann2009-02-282-4/+6
| | | | | | The generic sockaddr struct is too small for some addresses. For accept(), we have to allocate a sockaddr_storage struct on the stack, which is large enough for all addresses.
* client: use sockaddr_to_string()Max Kellermann2009-02-283-47/+9
| | | | | Removed the sockaddr_to_tmp_string() hack, use the new function sockaddr_to_string() instead.
* socket_util: unpack V4MAPPED addressesMax Kellermann2009-02-281-0/+20
| | | | | Unpack IPv4 addresses which are packed inside an IPv6 address, i.e. return "127.0.0.1" rather than "::ffff:127.0.0.1".
* socket_util: added function sockaddr_to_string()Max Kellermann2009-02-283-0/+103
| | | | | | Create the socket_util.c library, the first function is sockaddr_to_string(): it converts a sockaddr struct to a string containing the IP address in a human-readable form.
* update: use G_FILE_TEST_IS_REGULAR for archive filesMax Kellermann2009-02-281-1/+6
| | | | | | | | | When checking whether database entries have been deleted, don't check if an archive file is a directory (G_FILE_TEST_IS_DIR), use G_FILE_TEST_IS_REGULAR for this case instead. To determine if a "struct directory" is an archive, check for device==DEVICE_INARCHIVE. This is always false after loading the database, so this patch is not complete yet.
* update: don't update unchanged archiveMax Kellermann2009-02-281-1/+6
| | | | | When the mtime of an archive time hasn't changed, don't update it again.
* directory: added "mtime" propertyMax Kellermann2009-02-283-3/+17
| | | | | | Remember the modification time of each directory. This is important for archives (which are virtual directories right now), but may also be useful for an automatic update mechanism.
* update: moved code to update_archive_file()Max Kellermann2009-02-281-31/+50
| | | | Simplify the rather large function update_regular_file().
* directory: moved DIRECTORY_* string constantsMax Kellermann2009-02-273-7/+9
| | | | Moved some of them to to directory_save.c, and others to database.c.
* song_print: hide HTTP password in playlistMax Kellermann2009-02-274-1/+53
| | | | | | | Added the uri_remove_auth() library function which strips username and password from a HTTP URI, and use it in song_print_url(). This allows you to add HTTP URIs to the playlist including secret username and password, without disclosing it to all MPD clients.
* client: removed duplicate "client" string from logMax Kellermann2009-02-271-14/+14
| | | | | | | | | | | | | Since we introduced a GLib logging domain, the "client" string appears twice in the log lines: client: client 0: command returned 0 Removed the second one, now it looks like this: client: [0] command returned 0 Still not quite good, but better than before.
* update: print error when opendir() failsMax Kellermann2009-02-271-2/+7
| | | | | | | MPD used to be silent when it could stat() a directory, but could not opendir() it to read its contents. This caused a lot of support headache with users who have wrong file permissions. Add another warning message.
* tag: don't accept invalid UTF-8 sequencesMax Kellermann2009-02-271-5/+27
| | | | Overwrite invalid UTF-8 sequences with question marks.
* tag: make tag.num_items unsignedMax Kellermann2009-02-273-16/+6
| | | | | | There's no point in declaring num_items as a uint8_t, it doesn't save any space, due to padding. This allows us to lift the articial "255 items" limitation.
* tag: no CamelCaseMax Kellermann2009-02-2713-65/+60
| | | | Renamed numOfItems to num_items.
* tag: make tag_equal() return boolMax Kellermann2009-02-272-13/+13
|
* player_thread: removed meaningless warning on output failureMax Kellermann2009-02-261-5/+0
| | | | | | The warning message "problems opening audio device while playing ..." does not help at all, and should be removed. At this point, the real error message has already been logged by the output thread.
* output_all: print a warning when all outputs are disabledMax Kellermann2009-02-261-1/+7
| | | | | | When all outputs are disabled, MPD printed only a meaningless message "problems opening audio device", although it didn't attempt to open a device.
* output_all: removed "audio_outputs!=NULL" checkMax Kellermann2009-02-261-3/+0
| | | | | After initialization, audio_outputs is always non-NULL. Don't check that.
* mvp: fixed default device detectionMax Kellermann2009-02-262-1/+2
| | | | | The check "open()!=0" is wrong, you have to write "open()>=0", because -1 means error, and 0 is a valid file handle.
* output_plugin: report errors with GErrorMax Kellermann2009-02-2613-255/+443
| | | | | | | Use GLib's GError library for reporting output device failures. Note that some init() methods don't clean up properly after a failure, but that's ok for now, because the MPD core will abort anyway.
* osx: use OSStatus and GetMacOSStatusCommentString()Max Kellermann2009-02-261-15/+24
| | | | | The return type of most OS X functions is OSStatus, not int. We can get a nice error message from GetMacOSStatusCommentString(), log it.
* osx: start the audio device in the open() methodMax Kellermann2009-02-261-17/+8
| | | | | | Don't call AudioOutputUnitStart() in the play() method, do it after the device has been opened. We can eliminate the "started" property now, because the device is always started when it's open.
* osx: removed commented codeMax Kellermann2009-02-261-23/+2
| | | | | | We don't need to keep commented code forever. If we want that test_default_device() implementation back one day, we'll pick it from the git history.
* osx: no CamelCaseMax Kellermann2009-02-261-89/+85
| | | | Renamed types, functions, variables.
* output_thread: use the right audio_format in assert()Max Kellermann2009-02-261-1/+1
| | | | | | | | | | ao_play() gets PCM data in the in_audio_format, and converts it to out_audio_format. Comparing the input data with out_audio_format is wrong. prefixed with "STG:" will be automatically removed. STG: Trailing empty lines will be automatically removed. STG: vi: set textwidth=75 filetype=diff nobackup:
* shout: use config_get_block_unsigned()Max Kellermann2009-02-261-6/+3
| | | | Eliminated manual integer parsing.
* pulse: removed pa_simple!=NULL checksMax Kellermann2009-02-261-10/+2
| | | | | | | The MPD core guarantees that the audio_output object is always consistent, and our pa_simple!=NULL checks are superfluous. Also don't manually close the device on error in pulse_play(), since the MPD core does this automatically when the play() method returns 0.
* oss: moved code from oss_open() to oss_setup()Max Kellermann2009-02-261-13/+26
| | | | Eliminate one label and a bunch of gotos.
* oss: convert OSS_STAT_* to an enumMax Kellermann2009-02-261-10/+15
| | | | Use C instead of CPP.
* oss: return bool instead of intMax Kellermann2009-02-261-10/+10
| | | | | Return type of oss_find_supported_param(), oss_can_convert() and oss_find_unsupported_param() should be bool instead of int.
* oss: use unsigned integersMax Kellermann2009-02-261-14/+9
| | | | | Convert the num_supported and num_unsupported variables from signed to unsigned.
* oss: no CamelCaseMax Kellermann2009-02-262-109/+127
| | | | Renamed types, functions and variables.