aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2014-11-24 08:54:30 +0100
committerMax Kellermann <max@duempel.org>2014-11-24 08:54:30 +0100
commit951bad46e0638bd13c750fa92260dd9ccf424298 (patch)
treed73af401da4d6287531aa1a243237c0c78338820 /src
parent716225cd2f92ee0bb204de1d248dd2bc6c4c0221 (diff)
downloadmpd-951bad46e0638bd13c750fa92260dd9ccf424298.tar.gz
mpd-951bad46e0638bd13c750fa92260dd9ccf424298.tar.xz
mpd-951bad46e0638bd13c750fa92260dd9ccf424298.zip
decoder/{dsdiff,dsf,opus}: fix deadlock while seeking
Diffstat (limited to 'src')
-rw-r--r--src/decoder/plugins/DsdLib.cxx4
-rw-r--r--src/decoder/plugins/OpusDecoderPlugin.cxx2
2 files changed, 3 insertions, 3 deletions
diff --git a/src/decoder/plugins/DsdLib.cxx b/src/decoder/plugins/DsdLib.cxx
index d7eb5f7a3..8892ed387 100644
--- a/src/decoder/plugins/DsdLib.cxx
+++ b/src/decoder/plugins/DsdLib.cxx
@@ -53,7 +53,7 @@ dsdlib_skip_to(Decoder *decoder, InputStream &is,
offset_type offset)
{
if (is.IsSeekable())
- return is.Seek(offset, IgnoreError());
+ return is.LockSeek(offset, IgnoreError());
if (is.GetOffset() > offset)
return false;
@@ -72,7 +72,7 @@ dsdlib_skip(Decoder *decoder, InputStream &is,
return true;
if (is.IsSeekable())
- return is.Seek(is.GetOffset() + delta, IgnoreError());
+ return is.LockSeek(is.GetOffset() + delta, IgnoreError());
if (delta > 1024 * 1024)
/* don't skip more than one megabyte; it would be too
diff --git a/src/decoder/plugins/OpusDecoderPlugin.cxx b/src/decoder/plugins/OpusDecoderPlugin.cxx
index 25497fe8a..e14827e38 100644
--- a/src/decoder/plugins/OpusDecoderPlugin.cxx
+++ b/src/decoder/plugins/OpusDecoderPlugin.cxx
@@ -214,7 +214,7 @@ LoadEOSPacket(InputStream &is, Decoder *decoder, int serialno,
ogg_stream_clear(&os);
/* restore the previous file position */
- is.Seek(old_offset, IgnoreError());
+ is.LockSeek(old_offset, IgnoreError());
return result;
}