Commit message (Collapse) | Author | Files | Lines | ||
---|---|---|---|---|---|
2014-02-21 | PlayerListener: new interface to replace GlobalEvents access | Max Kellermann | 1 | -2/+3 | |
2014-01-28 | OutputAll: convert to class, move instance to class Partition | Max Kellermann | 1 | -2/+4 | |
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 | -20/+12 | |
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-11-28 | include cleanup using iwyu | Max Kellermann | 1 | -2/+1 | |
2013-10-29 | PlayerControl: move attributes to struct CrossFadeSettings | Max Kellermann | 1 | -12/+3 | |
2013-10-28 | player_control: rename to PlayerControl | Max Kellermann | 1 | -22/+22 | |
2013-10-26 | PlayerControl: initialize tagged_song in constructor | Max Kellermann | 1 | -0/+1 | |
2013-10-22 | Playlist: copy stream tags from the PlayerThread | Max Kellermann | 1 | -0/+22 | |
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-19 | *: use nullptr instead of NULL | Max Kellermann | 1 | -4/+4 | |
2013-10-17 | PlayerControl: GetError() returns an Error, not a char* | Max Kellermann | 1 | -13/+0 | |
2013-10-17 | Thread/Thread: replacement library for GThread | Max Kellermann | 1 | -4/+4 | |
2013-09-27 | PlayerControl: use strictly typed enums | Max Kellermann | 1 | -22/+22 | |
2013-09-27 | PlayerControl: convert functions to methods | Max Kellermann | 1 | -63/+18 | |
2013-09-04 | util/Error: new error passing library | Max Kellermann | 1 | -9/+5 | |
Replaces GLib's GError. | |||||
2013-07-28 | song: convert header to C++ | Max Kellermann | 1 | -8/+8 | |
2013-01-27 | PlayerControl: work around std::nanf() not being available on MacPorts | Max Kellermann | 1 | -0/+6 | |
2013-01-25 | PlayerControl: add second Cond object | Max Kellermann | 1 | -1/+1 | |
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 | -108/+92 | |
2013-01-15 | PlayerControl: initialise attribute "border_pause" | Max Kellermann | 1 | -1/+2 | |
2013-01-10 | PlayerControl: switch to the Mutex/Cond classes | Max Kellermann | 1 | -6/+1 | |
2013-01-10 | PlayerThread: use pc.cond instead of main_cond | Max Kellermann | 1 | -1/+1 | |
The main_cond variable was completely unnecessary. The pc.cond object can be used for both main->pc and pc->main. | |||||
2013-01-10 | DecoderControl: take ownership of client_cond | Max Kellermann | 1 | -3/+3 | |
Don't let the "client" pass its own GCond. This was not used consistently. | |||||
2013-01-09 | idle: convert to C++ | Max Kellermann | 1 | -5/+1 | |
2013-01-07 | replay_gain_info, ...: use cmath instead of math.h in C++ mode | Max Kellermann | 1 | -2/+3 | |
Fixes build problems with mingw32. | |||||
2013-01-04 | PlayerControl: initialize all attributes | Max Kellermann | 1 | -1/+5 | |
2013-01-04 | PlayerControl: add constructor and destructor | Max Kellermann | 1 | -25/+17 | |
2013-01-04 | player_control.h: convert header to C++ | Max Kellermann | 1 | -1/+1 | |
2013-01-04 | decoder_*: convert to C++ | Max Kellermann | 1 | -7/+7 | |
2012-09-28 | main: use C++ compiler | Max Kellermann | 1 | -1/+1 | |
2012-08-25 | player_thread: disable cross-fading in "single" mode | Max Kellermann | 1 | -0/+8 | |
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/+7 | |
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 | -36/+27 | |
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 | -4/+4 | |
2012-08-08 | player_control: rename player_error enum values | Max Kellermann | 1 | -6/+6 | |
2012-08-08 | player_control: remove unused enum player_error values | Max Kellermann | 1 | -15/+0 | |
2012-08-08 | player_control: inline trivial functions | Max Kellermann | 1 | -30/+0 | |
2011-10-06 | player_control: auto-start playback when seeking is requested | Max Kellermann | 1 | -3/+0 | |
Now that the player thread can handle SEEK commands while not (yet) playing, we can remove the "pc.state" check from pc_seek(). | |||||
2011-03-31 | fix common misspellings | Jonathan Neuschäfer | 1 | -1/+1 | |
These fixes were mostly generated with `codespell' [0] and manually reviewed. [0] http://git.profusion.mobi/cgit.cgi/lucas/codespell/ | |||||
2011-01-29 | copyright year 2011 | Max Kellermann | 1 | -1/+1 | |
2011-01-10 | decoder_control: store GCond object, not a player_control | Max Kellermann | 1 | -1/+1 | |
Remove the decoder dependency on player_control. All player_control was needed for is to signal the player thread, and we can do that with a simple GCond as well. | |||||
2011-01-10 | player_control: removed the global variable "pc" | Max Kellermann | 1 | -128/+138 | |
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-06-19 | player_control: hold mutex in pc_play(), pc_pause() | Max Kellermann | 1 | -9/+42 | |
Race condition fix. | |||||
2010-03-21 | Add support for MixRamp tags | Tim Phipps | 1 | -0/+31 | |
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-12 | player_control: hold lock while reading status | Max Kellermann | 1 | -1/+4 | |
2009-11-12 | include config.h in all sources | Max Kellermann | 1 | -0/+1 | |
After we've been hit by Large File Support problems several times in the past week (which only occur on 32 bit platforms, which I don't have), this is yet another attempt to fix the issue. | |||||
2009-11-03 | player_control: moved pc.next_song assertion into lock | Max Kellermann | 1 | -1/+2 | |
The assertion shouldn't access player_control.next_song without locking it. | |||||
2009-11-02 | {decoder,player}_control: removed duplicate wakeups | Max Kellermann | 1 | -3/+2 | |
Don't wake up the target thread in every iteration of the wait() loop. Waking it up once, right after the command has been set, must be enough. | |||||
2009-11-02 | player_control: lock player before setting seek parameters | Max Kellermann | 1 | -2/+6 | |
These parameters must be protected with a mutex, too. Wrap everything inside player_lock()/player_unlock(), and use player_command_locked() instead of player_command(). |