diff options
author | Max Kellermann <max@duempel.org> | 2014-11-24 08:54:30 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2014-11-24 08:54:30 +0100 |
commit | 951bad46e0638bd13c750fa92260dd9ccf424298 (patch) | |
tree | d73af401da4d6287531aa1a243237c0c78338820 /src/decoder/plugins | |
parent | 716225cd2f92ee0bb204de1d248dd2bc6c4c0221 (diff) | |
download | mpd-951bad46e0638bd13c750fa92260dd9ccf424298.tar.gz mpd-951bad46e0638bd13c750fa92260dd9ccf424298.tar.xz mpd-951bad46e0638bd13c750fa92260dd9ccf424298.zip |
decoder/{dsdiff,dsf,opus}: fix deadlock while seeking
Diffstat (limited to 'src/decoder/plugins')
-rw-r--r-- | src/decoder/plugins/DsdLib.cxx | 4 | ||||
-rw-r--r-- | src/decoder/plugins/OpusDecoderPlugin.cxx | 2 |
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; } |