diff options
author | Max Kellermann <max@duempel.org> | 2014-05-11 16:59:19 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2014-05-11 17:12:50 +0200 |
commit | 82337dec44347017ca04fe975e85e6d9e4edb635 (patch) | |
tree | 308036d4a7abbd2bb04ed472dc1fbacdc2587871 /src/input/ThreadInputStream.cxx | |
parent | f1d07002521a4a98acf130127cf42aef20a5e258 (diff) | |
download | mpd-82337dec44347017ca04fe975e85e6d9e4edb635.tar.gz mpd-82337dec44347017ca04fe975e85e6d9e4edb635.tar.xz mpd-82337dec44347017ca04fe975e85e6d9e4edb635.zip |
InputStream: add virtual destructor
Replaces the method Close().
Diffstat (limited to 'src/input/ThreadInputStream.cxx')
-rw-r--r-- | src/input/ThreadInputStream.cxx | 31 |
1 files changed, 9 insertions, 22 deletions
diff --git a/src/input/ThreadInputStream.cxx b/src/input/ThreadInputStream.cxx index 0f503be3f..408b757f9 100644 --- a/src/input/ThreadInputStream.cxx +++ b/src/input/ThreadInputStream.cxx @@ -29,6 +29,15 @@ ThreadInputStream::~ThreadInputStream() { + Lock(); + close = true; + wake_cond.signal(); + Unlock(); + + Cancel(); + + thread.Join(); + if (buffer != nullptr) { buffer->Clear(); HugeFree(buffer->Write().data, buffer_size); @@ -172,28 +181,6 @@ ThreadInputStream::Read(InputStream *is, void *ptr, size_t size, return tis.Read2(ptr, size, error); } -inline void -ThreadInputStream::Close2() -{ - Lock(); - close = true; - wake_cond.signal(); - Unlock(); - - Cancel(); - - thread.Join(); - - delete this; -} - -void -ThreadInputStream::Close(InputStream *is) -{ - ThreadInputStream &tis = *(ThreadInputStream *)is; - tis.Close2(); -} - inline bool ThreadInputStream::IsEOF2() { |