From e2de64d6f1beb9e492daf5b886e19933c1fa41dd Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdemultimedia@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- mpeglib/lib/input/threadSafeInputStream.cpp | 137 ++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 mpeglib/lib/input/threadSafeInputStream.cpp (limited to 'mpeglib/lib/input/threadSafeInputStream.cpp') diff --git a/mpeglib/lib/input/threadSafeInputStream.cpp b/mpeglib/lib/input/threadSafeInputStream.cpp new file mode 100644 index 00000000..8b18a4c5 --- /dev/null +++ b/mpeglib/lib/input/threadSafeInputStream.cpp @@ -0,0 +1,137 @@ +/* + thread safe wrapper for input Stream + Copyright (C) 2000 Martin Vogt + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU Library General Public License as published by + the Free Software Foundation. + + For more information look at the file COPYRIGHT in this package + + */ + + +#include "threadSafeInputStream.h" + + +ThreadSafeInputStream::ThreadSafeInputStream(InputStream* input) { + threadQueue=new ThreadQueue(); + this->input=input; +} + + +ThreadSafeInputStream::~ThreadSafeInputStream() { + delete threadQueue; + delete input; +} + + + +int ThreadSafeInputStream::open(const char* dest) { + int back; + threadQueue->waitForExclusiveAccess(); + back=input->open(dest); + threadQueue->releaseExclusiveAccess(); + return back; +} + + +void ThreadSafeInputStream::close() { + threadQueue->waitForExclusiveAccess(); + input->close(); + threadQueue->releaseExclusiveAccess(); +} + + +int ThreadSafeInputStream::isOpen() { + int back; + threadQueue->waitForExclusiveAccess(); + back=input->isOpen(); + threadQueue->releaseExclusiveAccess(); + return back; +} + + +int ThreadSafeInputStream::eof() { + int back; + threadQueue->waitForExclusiveAccess(); + back=input->eof(); + threadQueue->releaseExclusiveAccess(); + return back; +} + + +int ThreadSafeInputStream::read(char* buf,int len) { + int back; + threadQueue->waitForExclusiveAccess(); + back=input->read(buf,len); + threadQueue->releaseExclusiveAccess(); + return back; +} + + +int ThreadSafeInputStream::seek(long bytePos) { + int back; + threadQueue->waitForExclusiveAccess(); + back=input->seek(bytePos); + threadQueue->releaseExclusiveAccess(); + return back; +} + +void ThreadSafeInputStream::clear() { + threadQueue->waitForExclusiveAccess(); + input->clear(); + threadQueue->releaseExclusiveAccess(); +} + + +long ThreadSafeInputStream::getByteLength() { + long back; + threadQueue->waitForExclusiveAccess(); + back=input->getByteLength(); + threadQueue->releaseExclusiveAccess(); + return back; +} + + +long ThreadSafeInputStream::getBytePosition() { + long back; + threadQueue->waitForExclusiveAccess(); + back=input->getBytePosition(); + threadQueue->releaseExclusiveAccess(); + return back; +} + + +void ThreadSafeInputStream::insertTimeStamp(TimeStamp* src,long key,int len) { + threadQueue->waitForExclusiveAccess(); + input->insertTimeStamp(src,key,len); + threadQueue->releaseExclusiveAccess(); +} + + +TimeStamp* ThreadSafeInputStream::getTimeStamp(long key) { + TimeStamp* back; + threadQueue->waitForExclusiveAccess(); + back=input->getTimeStamp(key); + threadQueue->releaseExclusiveAccess(); + return back; +} + + +int ThreadSafeInputStream::bytesUntilNext(long key) { + int back; + threadQueue->waitForExclusiveAccess(); + back=input->bytesUntilNext(key); + threadQueue->releaseExclusiveAccess(); + return back; +} + +void ThreadSafeInputStream::print() { + threadQueue->waitForExclusiveAccess(); + input->print(); + threadQueue->releaseExclusiveAccess(); +} + + + -- cgit v1.2.1