aboutsummaryrefslogtreecommitdiffstats
path: root/src/PlayerThread.cxx (unfollow)
Commit message (Collapse)AuthorFilesLines
2013-10-02Log: new logging library APIMax Kellermann1-9/+11
Prepare to migrate away from GLib. Currently, we're still using GLib as a backend.
2013-09-27PlayerThread: convert struct player to a classMax Kellermann1-14/+17
2013-09-27PlayerThread: use strictly typed enumMax Kellermann1-14/+14
2013-09-27PlayerControl: use strictly typed enumsMax Kellermann1-44/+44
2013-09-27PlayerThread: move code to player_control::CommandFinished()Max Kellermann1-21/+12
2013-09-27PlayerThread: use nullptr instead of NULLMax Kellermann1-37/+37
2013-09-26PlayerThread: unlock/lock in player_task()Max Kellermann1-8/+3
2013-09-26PlayerThread: move code into the player classMax Kellermann1-269/+277
2013-09-26PlayerThread: use player referencesMax Kellermann1-116/+115
2013-09-26PlayerThread: use {decoder,player}_control referencesMax Kellermann1-214/+214
2013-09-26PlayerThread: allocate decoder_control on the stackMax Kellermann1-5/+5
2013-09-26PlayerThread: move global MusicBuffer variable into the player objectMax Kellermann1-24/+27
2013-09-26PlayerThread: simplify "buffer empty" assertionMax Kellermann1-7/+1
2013-09-26MusicBuffer: expose the C++ APIMax Kellermann1-19/+18
2013-09-26MusicPipe: expose the C++ APIMax Kellermann1-25/+24
2013-09-05Tag, ...: move to libtag.aMax Kellermann1-1/+1
2013-09-04util/Error: new error passing libraryMax Kellermann1-21/+19
Replaces GLib's GError.
2013-08-07Makefile.am: move sources to libsystem.aMax Kellermann1-1/+1
2013-08-07FatalError: new library to replace mpd_error.hMax Kellermann1-2/+2
2013-08-04*: use gcc.h macros instead of GLibMax Kellermann1-1/+1
2013-08-03audio_format: convert to C++Max Kellermann1-14/+13
2013-07-30tag: convert to C++Max Kellermann1-12/+12
2013-07-28song: convert header to C++Max Kellermann1-21/+21
2013-04-17use g_thread_new() if GLib is recent enoughMax Kellermann1-0/+4
Fixes deprecation warnings.
2013-01-25PlayerControl: add second Cond objectMax Kellermann1-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-21DecoderControl: move functions into the classMax Kellermann1-31/+31
2013-01-20PlayerControl: move functions into the classMax Kellermann1-61/+61
2013-01-10PlayerControl: switch to the Mutex/Cond classesMax Kellermann1-1/+1
2013-01-10PlayerThread: use pc.cond instead of main_condMax Kellermann1-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-10DecoderControl: take ownership of client_condMax Kellermann1-1/+1
Don't let the "client" pass its own GCond. This was not used consistently.
2013-01-09EventPipe: rename to GlobalEventsMax Kellermann1-5/+5
2013-01-09event_pipe.h: convert to C++Max Kellermann1-4/+1
2013-01-09idle: convert to C++Max Kellermann1-1/+1
2013-01-07replay_gain_info, ...: use cmath instead of math.h in C++ modeMax Kellermann1-1/+3
Fixes build problems with mingw32.
2013-01-07decoder_api.h, ...: add "extern C"Max Kellermann1-1/+1
2013-01-07mixer_all: convert to C++Max Kellermann1-1/+1
2013-01-04player_control.h: convert header to C++Max Kellermann1-1/+1
2013-01-04MusicChunk: move functions to methodsMax Kellermann1-2/+2
2013-01-04crossfade: convert to C++Max Kellermann1-1/+1
2013-01-04buffer, pipe: convert to C++Max Kellermann1-3/+3
2013-01-04decoder_*: convert to C++Max Kellermann1-1/+1
2013-01-02{decoder,player}_thread: convert to C++Max Kellermann1-24/+25
2012-09-28main: use C++ compilerMax Kellermann1-1/+1
2012-08-25player_thread: disable cross-fading in "single" modeMax Kellermann1-1/+14
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-15player_control: duplicate the song objectMax Kellermann1-2/+24
Make sure the player "owns" the next_song object, so nobody else can free it.
2012-08-15decoder_control: duplicate the song objectMax Kellermann1-1/+1
Make sure the decoder "owns" the song object, so nobody else can free it.
2012-08-15player_thread: add local variable "start_ms"Max Kellermann1-1/+3
Just in case "song" becomes invalid at some point.
2012-08-15decoder_control: add function _is_current_song()Max Kellermann1-1/+1
Replaces _current_song().
2012-08-08player_control: add GError attributeMax Kellermann1-10/+8
Rewrite of the pc_get_error_message() function, now using a GError object instead of the complicated "errored_song" attribute.
2012-08-08output_all: add basic GError supportMax Kellermann1-5/+19