Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | {android,win32}/build.py: move common code to python/build/ | Max Kellermann | 2015-11-20 | 5 | -104/+66 |
| | |||||
* | {android,win32}/build.py: fix missing rename | Max Kellermann | 2015-11-20 | 2 | -2/+2 |
| | |||||
* | {android,win32}/build.py: add toolchain classes | Max Kellermann | 2015-11-20 | 2 | -181/+195 |
| | |||||
* | {android,win32}/build.py: upgrade FFmpeg to 2.8.2 | Max Kellermann | 2015-11-17 | 2 | -4/+4 |
| | |||||
* | command/other: re-allow "lsinfo /" | Max Kellermann | 2015-11-13 | 1 | -1/+8 |
| | | | | This compatibility hack was accidently broken by commit f072cbbb | ||||
* | command/queue: use StringIsEqual() instead of memcmp() | Max Kellermann | 2015-11-13 | 1 | -1/+2 |
| | | | | memcmp() can overflow the buffer. | ||||
* | queue/Save: fix "Malformed playlist line in state file" | Max Kellermann | 2015-11-13 | 1 | -1/+1 |
| | | | | Regression by commit 738583e3 | ||||
* | player/Control: add code comments | Max Kellermann | 2015-11-13 | 1 | -0/+4 |
| | |||||
* | player/Control: Seek*() returns Error information | Max Kellermann | 2015-11-11 | 3 | -11/+18 |
| | |||||
* | decoder/Control: Seek() returns Error information | Max Kellermann | 2015-11-11 | 3 | -5/+18 |
| | |||||
* | queue/Playlist: seek methods return bool/Error instead of PlaylistResult | Max Kellermann | 2015-11-11 | 5 | -48/+78 |
| | |||||
* | command/CommandError: send verbose error message to client | Max Kellermann | 2015-11-11 | 2 | -22/+56 |
| | |||||
* | PlaylistError: remove unused code "ERRNO" | Max Kellermann | 2015-11-11 | 2 | -5/+0 |
| | |||||
* | decoder/Control: State::ERROR is illegal | Max Kellermann | 2015-11-11 | 1 | -1/+2 |
| | | | | | The state ERROR can only be entered during decoder initialization, and Seek() may only be called after initialization has been finished. | ||||
* | decoder/Control: use switch/case in Seek() | Max Kellermann | 2015-11-11 | 1 | -2/+13 |
| | |||||
* | player/Control: use class ScopeLock | Max Kellermann | 2015-11-11 | 2 | -36/+19 |
| | |||||
* | player/Control: move code to ClearError() | Max Kellermann | 2015-11-11 | 2 | -6/+6 |
| | |||||
* | player/Control: move code to SeekLocked() | Max Kellermann | 2015-11-11 | 2 | -5/+14 |
| | |||||
* | player/Control: add Lock prefix to locking method names | Max Kellermann | 2015-11-11 | 9 | -44/+44 |
| | |||||
* | StateFile: use StringAfterPrefix() instead of StringStartsWith() | Max Kellermann | 2015-11-11 | 4 | -41/+30 |
| | |||||
* | db/simple: use StringAfterPrefix() instead of StringStartsWith() | Max Kellermann | 2015-11-11 | 2 | -21/+20 |
| | |||||
* | util/StringPointer: add method empty() | Max Kellermann | 2015-11-11 | 1 | -0/+6 |
| | |||||
* | util/StringView: add method Literal() | Max Kellermann | 2015-11-06 | 1 | -2/+12 |
| | |||||
* | util/StringCompare: use StringView to simplify inline implementations | Max Kellermann | 2015-11-06 | 2 | -31/+14 |
| | |||||
* | playlist/soundcloud: make key_str "static const" | Max Kellermann | 2015-11-06 | 1 | -1/+1 |
| | |||||
* | db/update/InotifyQueue: use StringAfterPrefix() | Max Kellermann | 2015-11-06 | 1 | -6/+6 |
| | |||||
* | input/alsa: use StringAfterPrefix() | Max Kellermann | 2015-11-06 | 1 | -3/+2 |
| | |||||
* | util/UriUtil: use StringAfterPrefix() instead of memcmp() | Max Kellermann | 2015-11-06 | 1 | -9/+9 |
| | |||||
* | util/UriUtil: move code to SkipUriScheme() | Max Kellermann | 2015-11-06 | 1 | -6/+15 |
| | |||||
* | util/UriUtil: make variables more local | Max Kellermann | 2015-11-06 | 1 | -7/+4 |
| | |||||
* | util/StringCompare: add StringIsEmpty() | Max Kellermann | 2015-11-06 | 13 | -16/+37 |
| | |||||
* | util/StringCompare: use strncmp() instead of memcmp() in StringStartsWith() | Max Kellermann | 2015-11-06 | 2 | -3/+4 |
| | | | | | Some optimized implementations of memcmp() may not start from the beginning of the string, and may thus segfault. | ||||
* | util/StringUtil: move comparison functions to StringCompare.cxx | Max Kellermann | 2015-11-06 | 31 | -156/+236 |
| | |||||
* | tag/id3: convert path from "wchar_t*" to "char*" for error message | Max Kellermann | 2015-11-06 | 1 | -1/+3 |
| | |||||
* | player/Thread: call DecoderCommand::SEEK only on existing decoder | Max Kellermann | 2015-11-05 | 1 | -17/+22 |
| | | | | | If the decoder was just started, it already seeks to the desired position. | ||||
* | player/Thread: move code to WaitDecoderStartup() | Max Kellermann | 2015-11-05 | 1 | -7/+21 |
| | |||||
* | player/Thread: move player_command_finished() to PlayerControl | Max Kellermann | 2015-11-05 | 2 | -12/+10 |
| | |||||
* | player/Thread: copy pc.seek_time in ActivateDecoder() | Max Kellermann | 2015-11-05 | 1 | -2/+1 |
| | | | | | If this gets called while seeking, do the right thing. This moves the elapsed_time setter from method Run(), which is now redundant. | ||||
* | player/Control: initialize seek_time in EnqueueSongLocked() | Max Kellermann | 2015-11-05 | 2 | -6/+3 |
| | | | | Allows removing a few special cases in the player thread. | ||||
* | player/Thread: remove decoder error check from ActivateDecoder() | Max Kellermann | 2015-10-28 | 1 | -37/+8 |
| | | | | | | It is futile to check for decoder errors before the decoder has finished startup. At this time, it's unlikely that the decoder has already failed. | ||||
* | player/Thread: rename WaitForDecoder() to ActivateDecoder() | Max Kellermann | 2015-10-28 | 1 | -10/+15 |
| | | | | .. and fix its API documentation. | ||||
* | player/Thread: move code to ForwardDecoderError() | Max Kellermann | 2015-10-27 | 1 | -6/+22 |
| | |||||
* | player/Thread: clear pc.next_song earlier in WaitForDecoder() | Max Kellermann | 2015-10-27 | 1 | -4/+3 |
| | |||||
* | player/Control: use CANCEL to clear next_song in Seek() | Max Kellermann | 2015-10-27 | 1 | -1/+5 |
| | | | | | Assigning nullptr to next_song may disrupt the player thread and render undefined behavior. | ||||
* | player/Thread: merge the cross_fading flag into enum CrossFadeState | Max Kellermann | 2015-10-27 | 1 | -22/+25 |
| | |||||
* | player/Thread: move ResetCrossFade() calls to where pipes are set | Max Kellermann | 2015-10-27 | 1 | -3/+8 |
| | | | | | Move ResetCrossFade() to where cross-fading would actually break, to make the cross-fading state more reliable. | ||||
* | player/Thread: add method ResetCrossFade() | Max Kellermann | 2015-10-27 | 1 | -2/+10 |
| | |||||
* | player/Thread: more CrossFadeState documentation | Max Kellermann | 2015-10-27 | 1 | -1/+16 |
| | |||||
* | player/Thread: automatic CrossFadeState enum values | Max Kellermann | 2015-10-27 | 1 | -4/+4 |
| | |||||
* | player/Thread: move enum CrossFadeState into the Player class | Max Kellermann | 2015-10-27 | 1 | -7/+5 |
| |