| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Fixes MixRamp breakage.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
On NetBSD, PTHREAD_MUTEX_INITIALIZER and PTHREAD_COND_INITIALIZER are
not compatible with C++11 "constexpr" (see Mantis ticket 0004110). As
a workaround, don't ues "constexpr", and use the functions
pthread_mutex_init(), pthread_mutex_destroy(), pthread_cond_init() and
pthread_cond_destroy() instead. This adds some runtime overhead, but
is portable to POSIX implementations that have awkward initializer
macros.
|
| |
|
| |
|
|
|
|
|
|
|
| |
That attribute was uninitialized before, which could crash
libavformat.
See Debian bug 760669
|
|
|
|
|
| |
See code comment. Fixes assertion failure in
decoder_command_finished().
|
|
|
|
|
|
| |
Log call was added to the wrong branch.
Fixes regression by commit ca1a1149
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Casting std::numeric_limits<unsigned>::max() to "long" leads to an
overflow if sizeof(unsigned)==sizeof(long), and the result will be -1.
This happens on some 32 bit architectures, for example ARM and WIN32.
Workaround: use std::numeric_limits<int>::max(), which is the largest
signed integer. Since sizeof(long)>=sizeof(int), this will never
overflow.
Fixes Mantis ticket 0004080.
|
| |
|
| |
|
|
|
|
|
|
| |
The "current" attribute is a "song order", not a "song position".
This is usually the same - except in random mode. Fixes Mantis ticket
0004073.
|
| |
|
|
|
|
| |
The unit of gme_info_t::length is milliseconds, not centiseconds.
|
|
|
|
|
|
| |
The IsActive() method returned true even if the timer was not active,
after it completed once. This broke the state file timer, and the
state file was not saved periodically.
|
| |
|
|
|
|
| |
Same bug as in the previous commit.
|
|
|
|
|
|
|
| |
When the data chunk size is not a multiple of the frame size, the last
partial frame lead to an endless loop. We fix this by checking
chunk_sze>=frame instead of chunk_sze>0. This way, the partial frame
is simply skipped.
|
|
|
|
|
|
| |
In version 11, both ffmpeg and libav deprecate
AVCodecContext::codec_name. The function avcodec_descriptor_get() has
been introduced long ago.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Previously, MPD tried to slurp the whole song file, count the number
of frames and calculate the song duration from that. That however is
extremely expensive for remote files, and will delay playback for a
long time. Workaround: check only the first 128 frames and try to
extrapolate from here. Fixes Mantis ticket 0004035.
|
|
|
|
| |
.. instead of InputStream::LockRead(). The former is cancellable.
|
|
|
|
|
|
|
|
|
|
| |
Implement a "bulk" edit mode that postpones both UpdateQueuedSong()
and OnModified(). This way, the playlist version gets incremented
only once. More importantly: when adding multiple songs to a queue
that consists of only one song, the first song that got added will
always be played next. By postponing this choice, all newly added
songs get a chance to become the next song. Fixes the second (and
last) part of Mantis ticket 0004005.
|
|
|
|
|
|
| |
Don't restore the current song after shufflung when MPD is stopped
(but still remembers the current song internally). Fixes the first
part of Mantis ticket 0004005.
|
|
|
|
|
|
|
| |
Addresses Mantis ticket 0004015.
[mk: use decoder_read_full() only when needed, and a few formal
changes]
|
|
|
|
|
| |
Works around WAV stream playback bug, because libaudiofile does not
like partial reads (Mantis 0004028).
|
|
|
|
|
| |
.. instead of InputStream::LockRead(). The former is cancellable.
|
|
|
|
|
| |
Error message was 'too few arguments for "find"' because the "base"
constraint was not supported, and no other constraints remained.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Fixes missing song length on high-latency Opus files.
According to tests with 320 kbit/s opus files with 60ms packets, we
need to skip up to 29 kB.
|
|
|
|
|
|
|
|
|
| |
Turns out the lock-free code using atomics was not thread-safe. The
given callback could be invoked by GLib before the source_id attribute
was assigned. This commit changes the DeferredMonitor class to use a
Mutex to block the event loop until source_id is assigned. This bug
does not exist in the 0.19 branch because it does not use the GLib
main loop anymore.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
This corrects a major mistake from commit 724a59aa - there was one
small thing that commit was supposed to do, and it failed.
AV_TIME_BASE is not a seek flag.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Don't wait for an optimistic write to fail. This is an improved
workaround for the infamous Raspberry Pi bug (see commit af991765).
It works much better and comes without the negative side effects. The
old workaround is now obsolete.
|