- 27 Mar, 2009 16 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
We're using GLib macros which were introduced in GLib 2.6, like G_GNUC_MALLOC. Let's just drop support for GLib versions older than 2.6 instead of adding more complicated compatibility hacks.
-
Sean McNamara authored
-
Sean McNamara authored
socket, because there is no ioctl for non-sockets on Windows
-
Sean McNamara authored
-
Sean McNamara authored
-
Sean McNamara authored
networking, select(), ntohl(), etc.
-
Max Kellermann authored
Simplify initialization and finalization.
-
Max Kellermann authored
There are numerous race conditions between the libpulse thread (pulse_mixer.c callbacks) and the rest of MPD. Protect the volatile attributes of the pulse_mixer struct with a mutex to fix that.
-
Max Kellermann authored
Eliminate one indent level. Also remove several debug useless debug messages.
-
Max Kellermann authored
Those parameters are used after all.
-
Max Kellermann authored
Don't mess with pulse_mixer.volume for setting the volume. This variable should only be used to transfer the current volume from sink_input_vol() to pulse_mixer_get_volume().
-
Max Kellermann authored
The pa_context_get_sink_input_info() function is asynchronous, and after it returns, libpulse does not guarantee that the operation has completed yet; in fact, it is not likely. Explicitly wait for the operation to complete. The code for the new pulse_wait_for_operation() function was inspired by mplayer and xine code.
-
Max Kellermann authored
The function mixer_failed() expects the mixer mutex to be already locked, yet it calls mixer_close(), which attempts to lock the mutex again, deadlocking itself.
-
Romain Bignon authored
When single mode is enabled, after current song it stops playback, or it replay same song if repeat mode is activated.
-
Romain Bignon authored
The smartstop feature is a way to tell mpd to stop playing after current song. This patche provides: - 'state' command returns 'smartstop' state (1 or 0) - 'smartstop' can activate or not the smartstop state - when song is terminated, mpd stops playing and smartstop is set to 0
-
- 26 Mar, 2009 24 commits
-
-
Max Kellermann authored
Use the same code style as the rest of MPD.
-
Max Kellermann authored
This patch fixes a longer delay when moving around songs in the playlist. The main thread wants to enqueue a new "next" song into the player thread, but the player thread is waiting inside audio_output_all_wait() for the output threads. Use player_control.notify there, so audio_output_all_wait() gets woken up by the main thread, too.
-
Max Kellermann authored
The functions playPlaylist() and seekSongInPlaylist() expect a song position, not a song order number. Don't convert the "current" variable with queue_position_to_order().
-
Jeffrey Middleton authored
The move command now accepts a range for the first argument, in the same form as other range commands, e.g. move 15:17 3. The first song in the range is placed at the destination position. Note that as with other range commands, the range is inclusive on the left only; this example would move only songs 15 and 16, not 17. [mk: fixed signed/unsigned warnings; use G_MAXUINT instead of UINT_MAX]
-
Jeffrey Middleton authored
Clearly specified the format (song1:song2) for range argumentst, and added the range capability of the playlistinfo command.
-
Jeffrey Middleton authored
moveid uses an index, not a songid, for its second argument
-
Max Kellermann authored
Added g_strerror() and dlopen() suppressions.
-
Max Kellermann authored
Don't initialize attributes which are only used in an open mixer. As long as nobody accesses them, their values are uninitialized and undefined.
-
Max Kellermann authored
The pm->volume attribute was allocated in pulse_mixer_init(), but is never freed. This leaks memory. Instead of adding the g_free() call to pulse_mixer_finish(), let's just make "volume" a static attribute of the pulse_mixer struct. That is easier to deal with.
-
Max Kellermann authored
When the MPD core knows that the pulse mixer is open, pm->mainloop and pm->context must be non-NULL.
-
Max Kellermann authored
The attributes "online" and "index" were not properly reinitialized after a close/open cycle.
-
Max Kellermann authored
Nobody needs to modify these strings. We can make them const, and convert config_dup_block_string() to config_get_block_string(). This also fixes memory leaks in the pulse mixer.
-
Max Kellermann authored
The conf.h functions deal well with config_param==NULL and will return the specified default value then.
-
Max Kellermann authored
When the mixer initialization fails, we have to free the libpulse objects we have already created, to prevent resource leaks.
-
Max Kellermann authored
It's illegal to return from pulse_mixer_setup() without unlocking the main loop. In the error handling, that unlock() call was missing.
-
Max Kellermann authored
Prepare for adding proper error handling.
-
Max Kellermann authored
"volume_set" is an attribute which becomes undefined when the mixer is closed. That means, it must be initialized each time the mixer is opened.
-
Max Kellermann authored
The MPD core guarantees that methods are always invoked in a consistent state. This means we can remove lots of checks from the volume methods.
-
Max Kellermann authored
Instead of replacing NULL with the default device in the open() method, pass the default device to config_get_block_string().
-
Max Kellermann authored
Use config_get_block_string() instead of config_dup_block_string().
-
Max Kellermann authored
Detect misconfiguration during MPD startup.
-
Max Kellermann authored
The MPD core guarantees that methods are always invoked in a consistent state. This means we can remove lots of checks from the volume methods.
-
Max Kellermann authored
strncasecmp() is locale dependent, but we only need ASCII here.
-
Max Kellermann authored
Instead of replacing NULL with the default path in the open() method, pass the default path to config_get_block_string().
-