Commit message (Collapse) | Author | Files | Lines | ||
---|---|---|---|---|---|
2015-01-01 | Copyright year 2015 | Max Kellermann | 1 | -1/+1 | |
2014-08-30 | PlayerControl: make settings "const" | Max Kellermann | 1 | -2/+2 | |
2014-08-30 | PlayerControl: update include guard | Max Kellermann | 1 | -2/+2 | |
2014-08-29 | PlayerThread: use SongTime for elapsed_time | Max Kellermann | 1 | -2/+2 | |
2014-08-29 | PlayerControl: use SignedSongTime for the song duration | Max Kellermann | 1 | -2/+2 | |
2014-08-27 | PlayerControl: use std::chrono::duration for Seek() | Max Kellermann | 1 | -2/+3 | |
2014-02-21 | PlayerListener: new interface to replace GlobalEvents access | Max Kellermann | 1 | -3/+7 | |
2014-01-28 | output: rename struct audio_output to AudioOutput | Max Kellermann | 1 | -1/+1 | |
2014-01-28 | OutputAll: convert to class, move instance to class Partition | Max Kellermann | 1 | -1/+5 | |
Another big chunk of code for multi-player support. | |||||
2014-01-13 | copyright year 2014 | Max Kellermann | 1 | -1/+1 | |
2014-01-09 | DetachedSong: fork of struct Song | Max Kellermann | 1 | -18/+18 | |
From now on, struct Song will be used by the database only, and DetachedSong will be used by everybody else. DetachedSong is easier to use, but Song has lower overhead. | |||||
2013-10-30 | *: update copyright year to 2013 | Max Kellermann | 1 | -1/+1 | |
2013-10-29 | PlayerControl: move attributes to struct CrossFadeSettings | Max Kellermann | 1 | -6/+7 | |
2013-10-28 | player_control: rename to PlayerControl | Max Kellermann | 1 | -7/+7 | |
2013-10-22 | Playlist: copy stream tags from the PlayerThread | Max Kellermann | 1 | -1/+42 | |
Finally restores an important feature that has been broken for several months when the PlayerThread started working with Song copies instead of pointers to the Queue's Song instances (commit e96779d). | |||||
2013-10-17 | PlayerControl: GetError() returns an Error, not a char* | Max Kellermann | 1 | -5/+23 | |
2013-10-17 | Thread/Thread: replacement library for GThread | Max Kellermann | 1 | -8/+8 | |
2013-09-27 | PlayerControl: use strictly typed enums | Max Kellermann | 1 | -38/+37 | |
2013-09-27 | PlayerControl: convert functions to methods | Max Kellermann | 1 | -0/+55 | |
2013-09-27 | PlayerThread: move code to player_control::CommandFinished() | Max Kellermann | 1 | -0/+14 | |
2013-09-04 | util/Error: new error passing library | Max Kellermann | 1 | -4/+4 | |
Replaces GLib's GError. | |||||
2013-08-03 | audio_format: convert to C++ | Max Kellermann | 1 | -3/+3 | |
2013-07-28 | song: convert header to C++ | Max Kellermann | 1 | -4/+5 | |
2013-01-25 | PlayerControl: add second Cond object | Max Kellermann | 1 | -0/+32 | |
This fixes a deadlock bug introduced by 18076ac9. After all, the second Cond was necessary. The problem: two threads can wait for a signal at the same time. The player thread waits for the output thread to finish playback. The main thread waits for the player thread to complete a command. The output thread finishes playback, and sends a signal, which unfortunately does not wake up the player thread, but the main thread. The main thread sees that the command is still not finished, and waits again. The signal is lost forever, and MPD is deadlocked. | |||||
2013-01-20 | PlayerControl: move functions into the class | Max Kellermann | 1 | -167/+121 | |
2013-01-10 | PlayerControl: switch to the Mutex/Cond classes | Max Kellermann | 1 | -6/+8 | |
2013-01-04 | PlayerControl: add constructor and destructor | Max Kellermann | 1 | -6/+4 | |
2013-01-04 | player_control.h: convert header to C++ | Max Kellermann | 1 | -0/+0 | |
2012-08-25 | player_thread: disable cross-fading in "single" mode | Max Kellermann | 1 | -0/+15 | |
This commit reimplements the core of the "single" mode. Instead of doing the detection in the playlist code from the outside, it is moved to the player thread, which gets a new option called "border_pause". It will now pause playback exactly at the beginning of the new song, making the feature more reliable. Now that the player thread knows what will happen, it can suppress cross-fading. Fixes mantis tickets 0003055 and 0003166. | |||||
2012-08-15 | player_control: duplicate the song object | Max Kellermann | 1 | -0/+18 | |
Make sure the player "owns" the next_song object, so nobody else can free it. | |||||
2012-08-08 | player_control: add GError attribute | Max Kellermann | 1 | -9/+21 | |
Rewrite of the pc_get_error_message() function, now using a GError object instead of the complicated "errored_song" attribute. | |||||
2012-08-08 | player_control: rename attribute "error" to "error_type" | Max Kellermann | 1 | -3/+5 | |
2012-08-08 | player_control: rename player_error enum values | Max Kellermann | 1 | -3/+11 | |
2012-08-08 | player_control: remove unused enum player_error values | Max Kellermann | 1 | -3/+0 | |
2012-08-08 | player_control: inline trivial functions | Max Kellermann | 1 | -10/+25 | |
2011-01-29 | copyright year 2011 | Max Kellermann | 1 | -1/+1 | |
2011-01-10 | include cleanup | Max Kellermann | 1 | -1/+2 | |
2011-01-10 | player_control: removed the global variable "pc" | Max Kellermann | 1 | -39/+40 | |
Allocate a player_control object where needed, and pass it around. Each "client" object is associated with a "player_control" instance. This prepares multi-player support. | |||||
2010-03-21 | Add support for MixRamp tags | Tim Phipps | 1 | -0/+14 | |
Adds mixrampdb and mixrampdelay commands. Reads MIXRAP_START and MIXRAMP_END tags from FLAC files and overlaps instead of crossfading. | |||||
2009-12-31 | Update copyright notices. | Avuton Olrich | 1 | -1/+1 | |
2009-11-09 | player_control: removed the "volatile" attribute | Max Kellermann | 1 | -2/+2 | |
Our use of the "volatile" keyword was wrong from the start, and now that we have proper locking, we can safely remove all of them. | |||||
2009-11-03 | decoder_control: make the song objects const | Max Kellermann | 1 | -1/+1 | |
They are just informational. | |||||
2009-10-31 | decoder_control: removed the global variable "dc" | Max Kellermann | 1 | -1/+3 | |
Allocate a decoder_control object where needed, and pass it around. This will allow more than one decoder thread one day. | |||||
2009-10-31 | player_control: protect command, state, error with a mutex | Max Kellermann | 1 | -4/+74 | |
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. | |||||
2009-10-23 | output_plugin: added methods enable() and disable() | Max Kellermann | 1 | -0/+9 | |
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. | |||||
2009-10-08 | player_thread: get "elapsed" from audio outputs | Max Kellermann | 1 | -0/+6 | |
Tracking the "elapsed" time from the chunks which we have sent to the output pipe is very imprecise: since we have implemented the music pipe, we're sending large number of chunks at once, giving the "elapsed" time stamp a resolution of usually more than a second. This patch changes the source of this information to the outputs. If a chunk has been played by all outputs, the "elapsed" time stamp is updated. The new command PLAYER_COMMAND_REFRESH makes the player thread update its status information: it tells the outputs to update the chunk time stamp. After that, player_control.elapsed_time is current. | |||||
2009-10-08 | player_control: eliminate PLAYER_COMMAND_PLAY | Max Kellermann | 1 | -1/+0 | |
Sending PLAYER_COMMAND_STOP followed by PLAYER_COMMAND_QUEUE does the same. PLAYER_COMMAND_PLAY is redundant. | |||||
2009-10-08 | player_control: no CamelCase | Max Kellermann | 1 | -15/+24 | |
2009-10-08 | player_control: bundle "get" functions in pc_get_status() | Max Kellermann | 1 | -11/+10 | |
The new player_status struct replaces a bunch of playerGetX() functions. When we add proper locking to the player_control struct, we will only need to lock once for the "status" command. | |||||
2009-10-08 | player_control: allocate getPlayerErrorStr() result | Max Kellermann | 1 | -0/+5 | |
This lets us eliminate the static fixed-size buffer. |