| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
Use GMutex/GCond instead of the notify library. Manually lock the
player_control object before accessing the protected attributes. Use
the GCond object to notify the player thread and the main thread.
|
| |
|
| |
|
|
|
|
|
|
|
| |
With these methods, an output plugin can allocate some global
resources only if it is actually enabled. The method enable() is
called after daemonization, which allows for more sophisticated
resource allocation during that method.
|
|
|
|
| |
There's no point in clearing the audio format before exiting.
|
|
|
|
|
| |
This way, the function call in the main() function does not need
another pair of #ifdef/#endif.
|
|
|
|
|
|
| |
I'm not sure about the advantages of calling g_set_application_name(),
because I don't use a task manager (except for ps and kill), but it
sure doesn't hurt.
|
| |
|
|
|
|
|
|
|
| |
Accidently, MPD has been using several GLib 2.16 functions for a
while, and nobody noticed yet. To simplify the code base, let's bump
the minimum GLib version for MPD to 2.16. That version is old enough,
and it's reasonable to expect users to have it.
|
| |
|
|
|
|
|
|
| |
This patch implements a light-weight inotify library, and watches all
directories below the music directory. It updates all directories
where files changed after a delay of 5 seconds.
|
|
|
|
|
| |
"rescan" is the same as "update", but it discards existing songs in
the database.
|
|
|
|
| |
Don't call g_error(), which will abort the process and dump core.
|
|
|
|
| |
Don't call g_error(), which will abort the process and dump core.
|
| |
|
|
|
|
|
| |
Both options are deprecated, and should not be used anymore. Many
users get confused by their presence.
|
|
|
|
|
|
|
| |
On FreeBSD, "stderr" is a macro, and using this name for a struct
member breaks the build.
[mk: renamed _stderr to log_stderr]
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The "group" configuration option is similar to "user" as it
sets user set what group MPD shall run as. With "user"
option, MPD changed GID to the GID of the user, however,
more control could be desired.
Moreover, the patch changes the way of checking whether no
setuid(2)/setgid(2) is required -- previously user names
were compered, now UID and GIDs are compered (ie. the one we
already have (getuid(2)/getgid(2)) with the one we want to
change to).
|
|
|
|
| |
Added another glue function in main().
|
|
|
|
|
|
| |
The glue_*() functions act as a glue between MPD's main() function and
its libraries. They handle disabled features, and pass validated
configuration options.
|
|
|
|
| |
No CamelCase.
|
|
|
|
| |
Renamed type, variables and functions.
|
| |
|
|
|
|
|
| |
The variables "success" and "error" are only used if SQLite support is
enabled.
|
| |
|
| |
|
|
|
|
| |
networking, select(), ntohl(), etc.
|
|
|
|
| |
Use GLib the logging functions g_debug(), g_error() instead.
|
|
|
|
|
|
|
|
| |
This updates the copyright header to all be the same, which is
pretty much an update of where to mail request for a copy of the GPL
and the years of the MPD project. This also puts all committers under
'The Music Player Project' umbrella. These entries should go
individually in the AUTHORS file, for consistancy.
|
|
|
|
|
|
|
|
| |
Turn the music_pipe into a simple music_chunk queue. The music_chunk
allocation code is moved to music_buffer, and is now managed with a
linked list instead of a ring buffer. Two separate music_pipe objects
are used by the decoder for the "current" and the "next" song, which
greatly simplifies the cross-fading code.
|
| |
|
|
|
|
| |
Do error reporting with GLib's GError library.
|
|
|
|
| |
Renamed functions.
|
|
|
|
| |
Renamed functions and variables.
|
|
|
|
|
| |
Moved code which deals with all audio outputs at once into a separate
library.
|
|
|
|
|
|
|
| |
Export the "g_playlist" variable, and pass it to all playlist
functions. This way, we can split playlist.c easier into separate
parts. The code which initializes the singleton variable is moved to
playlist_global.c.
|
|
|
|
| |
Don't mention the program name in the error message.
|
|
|
|
|
|
|
| |
When the update thread is started before MPD has forked (for
daemonization), it is killed, because threads do not survive a fork().
This induces an inconsistent state where MPD won't start any update
thread at all, because it thinks the thread is already running.
|
|
|
|
|
|
|
|
|
| |
Reimplemented the legacy mixer configuration: copy the deprecated
configuration values into the audio_output section. Don't configure
the mixers twice (once for the audio_output, and a second time for the
legacy values).
This requires volume_init() to be called before initAudioDriver().
|
|
|
|
|
| |
All config_get_block_*() functions should accept constant config_param
pointers.
|
|
|
|
|
| |
Don't declare and export variables specific to stored playlists in
playlist.c/playlist.h.
|
|
|
|
|
| |
Start the decoder thread when the player thread starts. The decoder
thread is already stopped by the player thread.
|
|
|
|
|
|
|
| |
"Stickers" are pieces of information attached to existing MPD objects
(e.g. song files, directories, albums). Clients can create arbitrary
name/value pairs. MPD itself does not assume any special meaning in
them.
|
|
|
|
|
| |
This way, we don't have to pass the full "Options" object to
daemonize().
|
|
|
|
|
|
| |
The constructor/destructor functions parse and free the configuration
properly. This way, we don't have to load the pid file path more than
once.
|
|
|
|
| |
The state_file library should manage its own regular saves.
|
|
|
|
|
| |
The constructor/destructor interface should hide the functions
read_state_file() and write_state_file().
|
|
|
|
| |
config_get_path() is an simpler interface than parseConfigFilePath().
|
|
|
|
|
| |
Fetch the configuration variables buffered_chunks and
buffered_before_play just when they are needed.
|
|
|
|
|
| |
Moved changeToUser(), cleanUpPidFile(), killFromPidFile() to
daemon.c. These are daemonization functions.
|