- 06 Oct, 2008 13 commits
-
-
Eric Wong authored
These patterns have been sitting in my private .git/info/exclude files since 2005 because we used to use SVN.
-
Eric Wong authored
We already know if a song is a URL or not based on whether it has parentDir defined or not. Hopefully one day in the future we can drop HTTP support from MPD entirely when an HTTP filesystem comes along and we can access streams via open(2).
-
Max Kellermann authored
The "packed" attribute may have negative side effects on performance. Remove the "packed" attribute, and increase the size of "song.url" to a multiple of the machine word size.
-
Eric Wong authored
Reduce the number of allocations we make, so there's less pressure on the allocator and less overhead to keep track of the allocations in.
-
Eric Wong authored
It didn't save us any lines of code nor did it do anything useful since we would overwrite everything anyways.
-
Eric Wong authored
There's no reason to scan the playlist for a song we just allocated.
-
Eric Wong authored
This got broken when listHandlerFunc was removed. Since we no longer need it and it's confusing, remove processCommandInternal and just use process_command.
-
Eric Wong authored
Instead of allocating a new one, just reuse an existing one if one is found when rereading the DB. This is a small makes the previous commit work on subdirectories of the root music directory. [1] "song: better handling of existing songs when rereading DB"
-
Eric Wong authored
avoid some redundant clearing logic as well, since the tag is getting freed.
-
Eric Wong authored
commands should really not behave differently if they're issued inside a command list or not; so stop having special handler functions to deal with them. "update" was the only command that used this functionality and I changed that in the last commit to serialize access.
-
Eric Wong authored
Now the "update" command can be issued multiple times regardless of whether the client is in list mode or not. We serialize the update tasks to prevent updates from trampling over each other and will spawn another update task once the current one is finished updating and reaped. Right now we cap the queue size to 32 which is probably enough (I bet most people usually run update with no argument anyways); but we can make it grow/shrink dynamically if needed. There'll still be a hard-coded limit to prevent DoS attacks, though.
-
Eric Wong authored
It'll be easier to keep track of what code runs in what task/thread this way.
-
Eric Wong authored
Instead of relying on the shortname, just pass the song pointer to prevent redundant lookups during deletes.
-
- 29 Sep, 2008 27 commits
-
-
Max Kellermann authored
Add support for 24 bit PCM samples to all functions. Note that pcm_convertAudioFormat() converts 24 bit samples to 16 bit; to preserve full quality, support for "real" 24 bit conversion should be added.
-
Max Kellermann authored
Moved code into separate bit specific functions: - pcm_volumeChange() -> pcm_volume_change_X() - pcm_add() -> pcm_add_X() - pcm_convertTo16bit() -> pcm_convert_8_to_16()
-
Max Kellermann authored
pcm_mix() might overflow the destination buffer if it is smaller than the second buffer. This is ok because the physical buffer size passed by cross_fade_apply() is always big enough, but clutters pcm_mix() with complicated length checks and contains a dangerous buffer overflow pitfall. Simplify pcm_mix()/pcm_add() and pass only the smaller buffer size; let cross_fade_apply() do the memcpy().
-
Max Kellermann authored
pause() puts the audio output into pause mode: if supported, it may perform a special action, which keeps the device open, but does not play anything. Output plugins like "shout" might want to play silence during pause, so their clients won't be disconnected. Plugins which do not support pausing will simply be closed, and have to be reopened when unpaused. This pach includes an implementation for the shout plugin, which sends silence chunks.
-
Max Kellermann authored
The function audio_output_is_pending() returns whether there is a pending command. This is useful for output plugins as a break condition for longer loops.
-
Max Kellermann authored
The old struct initializers are error prone and don't allow moving elements around. Since we are going to overhaul some of the APIs soon, it's easier to have all implementations use C99 initializers.
-
Max Kellermann authored
Why have a "_func" prefix on all method names? Also don't typedef the methods, there is no advantage in that.
-
Max Kellermann authored
Since we use a C99 compiler now, we can assert that the C99 standard headers are available, no need for complicated compile time checks. Kill mpd_types.h.
-
Max Kellermann authored
Having an enum type is much nicer than an anonymous integer plus CPP macros. Note that the old code didn't save any space by declaring the variable 8 bit, due to padding.
-
Max Kellermann authored
The union const_hack is only used at one place in the shout plugin. Remove its global type declaration.
-
Max Kellermann authored
C99 will soon have its 10th birthday. Let's not beat the dead C89 horse, and raise the compiler requirements. From now on, we need a C99 compiler. This adds "-std=gnu99" to the GCC compiler options, in case GCC is used.
-
Max Kellermann authored
Do full C99 integer type conversion in all modules which were not touched by Eric's merged patch.
-
Eric Wong authored
Seeing the "mpd_" prefix _everywhere_ is mind-numbing as the mind needs to retrain itself to skip over the first 4 tokens of a type to get to its meaning. So avoid having extra characters on my terminal to make it easier to follow code at 2:30 am in the morning. Please report any new issues you may come across on Free toolchains. I realize how difficult it can be to build/maintain cross-compiling toolchains and I have no intention of forcing people to upgrade their toolchains to build mpd. Tested with gcc 2.95.4 and and gcc 4.3.1 on x86-32.
-
Eric Wong authored
tfing wrote: > I have quite some files with an empty album tag as they do not come > from a particular album. > > If I want to look for those files and browse them, this happens: > :: nc localhost 6600 > OK MPD 0.12.0 > find album "" > ACK [2@0] {find} too few arguments for "find" > > I'd like to be able to browse those files in a client like gmpc. > So these 2 items would have to be developed: > - list album should report that some files have an empty tag > - it should be possible to search for an empty tag with the find command Patch-by: Marc Pavot ref: http://musicpd.org/mantis/view.php?id=464
-
Eric Wong authored
This only breaks "update" under list command mode and no other commands. This can be done more optimally without the extra heap allocation via xstrdup(); but is uncommon enough to not matter.
-
Eric Wong authored
Improving the signal to noise ratio...
-
Eric Wong authored
If a write failed, it's a good sign subsequent writes will fail, too, so propgate errors all the way up the stack.
-
Eric Wong authored
A long time ago in an mpd far away...
-
Eric Wong authored
MPD has supported more audio formats than just MP3 for over five years...
-
Eric Wong authored
We don't change the song pointer there, either.
-
Eric Wong authored
We don't modify the Song when we delete it
-
Eric Wong authored
It was a huge confusing mess of parameter passing around and around. Add a few extra assertions to ensure we're handling parent/child relationships properly.
-
Eric Wong authored
This is like basename(3) but with predictable semantics independent of C library or build options used. This is also much more strict and does not account for trailing slashes (mpd should never deal with trailing slashes on internal functions).
-
Eric Wong authored
We no longer fork for directory updates, so we no longer have children to reap.
-
Eric Wong authored
Small memory reduction compared to songvec since most users have much fewer dirs than songs, but still nice to have.
-
Eric Wong authored
We no longer for for updates
-
Eric Wong authored
"free" implies the songvec structure itself is freed, which is not the case.
-