summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/threadutil.cpp6
-rw-r--r--noncore/multimedia/opieplayer2/threadutil.h2
2 files changed, 8 insertions, 0 deletions
diff --git a/noncore/multimedia/opieplayer2/threadutil.cpp b/noncore/multimedia/opieplayer2/threadutil.cpp
index 5687f42..a5cc92d 100644
--- a/noncore/multimedia/opieplayer2/threadutil.cpp
+++ b/noncore/multimedia/opieplayer2/threadutil.cpp
@@ -195,48 +195,54 @@ void Thread::start()
195 pthread_attr_destroy( &attributes ); 195 pthread_attr_destroy( &attributes );
196 return; 196 return;
197 } 197 }
198 pthread_attr_destroy( &attributes ); 198 pthread_attr_destroy( &attributes );
199} 199}
200 200
201void Thread::terminate() 201void Thread::terminate()
202{ 202{
203 AutoLock lock( d->guard ); 203 AutoLock lock( d->guard );
204 if ( !d->isRunning ) 204 if ( !d->isRunning )
205 return; 205 return;
206 206
207 pthread_cancel( d->self ); 207 pthread_cancel( d->self );
208} 208}
209 209
210bool Thread::wait() 210bool Thread::wait()
211{ 211{
212 AutoLock lock( d->guard ); 212 AutoLock lock( d->guard );
213 if ( !d->isRunning ) 213 if ( !d->isRunning )
214 return true; 214 return true;
215 215
216 return d->finishCondition.wait( d->guard ); 216 return d->finishCondition.wait( d->guard );
217} 217}
218 218
219bool Thread::isRunning() const
220{
221 AutoLock lock( d->guard );
222 return d->isRunning;
223}
224
219void Thread::exit() 225void Thread::exit()
220{ 226{
221 pthread_exit( 0 ); 227 pthread_exit( 0 );
222} 228}
223 229
224OnewayNotifier::OnewayNotifier() 230OnewayNotifier::OnewayNotifier()
225{ 231{
226 int fds[ 2 ]; 232 int fds[ 2 ];
227 pipe( fds ); 233 pipe( fds );
228 m_readFd = fds[ 0 ]; 234 m_readFd = fds[ 0 ];
229 m_writeFd = fds[ 1 ]; 235 m_writeFd = fds[ 1 ];
230 236
231 m_notifier = new QSocketNotifier( m_readFd, QSocketNotifier::Read ); 237 m_notifier = new QSocketNotifier( m_readFd, QSocketNotifier::Read );
232 connect( m_notifier, SIGNAL( activated( int ) ), 238 connect( m_notifier, SIGNAL( activated( int ) ),
233 this, SLOT( wakeUp() ) ); 239 this, SLOT( wakeUp() ) );
234} 240}
235 241
236OnewayNotifier::~OnewayNotifier() 242OnewayNotifier::~OnewayNotifier()
237{ 243{
238 delete m_notifier; 244 delete m_notifier;
239 245
240 ::close( m_readFd ); 246 ::close( m_readFd );
241 ::close( m_writeFd ); 247 ::close( m_writeFd );
242} 248}
diff --git a/noncore/multimedia/opieplayer2/threadutil.h b/noncore/multimedia/opieplayer2/threadutil.h
index b537cc1..b67b61d 100644
--- a/noncore/multimedia/opieplayer2/threadutil.h
+++ b/noncore/multimedia/opieplayer2/threadutil.h
@@ -79,48 +79,50 @@ namespace ThreadUtil
79 void wakeOne(); 79 void wakeOne();
80 void wakeAll(); 80 void wakeAll();
81 81
82 private: 82 private:
83 struct Data; 83 struct Data;
84 Data *d; 84 Data *d;
85 85
86 WaitCondition( const WaitCondition & ); 86 WaitCondition( const WaitCondition & );
87 WaitCondition &operator=( const WaitCondition & ); 87 WaitCondition &operator=( const WaitCondition & );
88 }; 88 };
89 89
90 class Thread 90 class Thread
91 { 91 {
92 friend void *::_threadutil_start_thread( void* ); 92 friend void *::_threadutil_start_thread( void* );
93 friend void ::_threadutil_terminate_thread( void* ); 93 friend void ::_threadutil_terminate_thread( void* );
94 public: 94 public:
95 Thread(); 95 Thread();
96 virtual ~Thread(); 96 virtual ~Thread();
97 97
98 void start(); 98 void start();
99 void terminate(); 99 void terminate();
100 100
101 bool wait(); 101 bool wait();
102 102
103 bool isRunning() const;
104
103 static void exit(); 105 static void exit();
104 protected: 106 protected:
105 virtual void run() = 0; 107 virtual void run() = 0;
106 108
107 private: 109 private:
108 struct Data; 110 struct Data;
109 Data *d; 111 Data *d;
110 }; 112 };
111 113
112 class OnewayNotifier : public QObject 114 class OnewayNotifier : public QObject
113 { 115 {
114 Q_OBJECT 116 Q_OBJECT
115 public: 117 public:
116 OnewayNotifier(); 118 OnewayNotifier();
117 ~OnewayNotifier(); 119 ~OnewayNotifier();
118 120
119 void notify(); 121 void notify();
120 122
121 signals: 123 signals:
122 void awake(); 124 void awake();
123 125
124 private slots: 126 private slots:
125 void wakeUp(); 127 void wakeUp();
126 128