summaryrefslogtreecommitdiff
path: root/noncore/multimedia/opieplayer2/threadutil.cpp
Unidiff
Diffstat (limited to 'noncore/multimedia/opieplayer2/threadutil.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/threadutil.cpp17
1 files changed, 8 insertions, 9 deletions
diff --git a/noncore/multimedia/opieplayer2/threadutil.cpp b/noncore/multimedia/opieplayer2/threadutil.cpp
index 6ed9853..b5cac61 100644
--- a/noncore/multimedia/opieplayer2/threadutil.cpp
+++ b/noncore/multimedia/opieplayer2/threadutil.cpp
@@ -117,25 +117,25 @@ bool WaitCondition::wait( Mutex &mutex )
117void WaitCondition::wakeOne() 117void WaitCondition::wakeOne()
118{ 118{
119 pthread_cond_signal( &d->waitCondition ); 119 pthread_cond_signal( &d->waitCondition );
120} 120}
121 121
122void WaitCondition::wakeAll() 122void WaitCondition::wakeAll()
123{ 123{
124 pthread_cond_broadcast( &d->waitCondition ); 124 pthread_cond_broadcast( &d->waitCondition );
125} 125}
126 126
127struct Thread::Data 127struct Thread::Data
128{ 128{
129 Data() : isRunning( false ) 129 Data() : isRunning( false )
130 {} 130 {}
131 131
132 pthread_t self; 132 pthread_t self;
133 Mutex guard; 133 Mutex guard;
134 bool isRunning; 134 bool isRunning;
135 135
136 WaitCondition finishCondition; 136 WaitCondition finishCondition;
137 137
138 Thread *thr; 138 Thread *thr;
139 139
140 void run() { thr->run(); } 140 void run() { thr->run(); }
141}; 141};
@@ -179,34 +179,34 @@ Thread::Thread()
179 179
180Thread::~Thread() 180Thread::~Thread()
181{ 181{
182 assert( d->isRunning == false ); 182 assert( d->isRunning == false );
183 delete d; 183 delete d;
184} 184}
185 185
186void Thread::start() 186void Thread::start()
187{ 187{
188 AutoLock lock( d->guard ); 188 AutoLock lock( d->guard );
189 189
190 if ( d->isRunning ) { 190 if ( d->isRunning ) {
191 odebug << "ThreadUtil::Thread::start() called for running thread." << oendl; 191 odebug << "ThreadUtil::Thread::start() called for running thread." << oendl;
192 return; 192 return;
193 } 193 }
194 194
195 pthread_attr_t attributes; 195 pthread_attr_t attributes;
196 pthread_attr_init( &attributes ); 196 pthread_attr_init( &attributes );
197 pthread_attr_setscope( &attributes, PTHREAD_SCOPE_SYSTEM ); 197 pthread_attr_setscope( &attributes, PTHREAD_SCOPE_SYSTEM );
198 int err = pthread_create( &d->self, &attributes, start_thread, ( void* )d ); 198 int err = pthread_create( &d->self, &attributes, start_thread, ( void* )d );
199 if ( err != 0 ) { 199 if ( err != 0 ) {
200 odebug << "ThreadUtil::Thread::start() : can't create thread: " << strerror( err ) << "" << oendl; 200 odebug << "ThreadUtil::Thread::start() : can't create thread: " << strerror( err ) << "" << oendl;
201 pthread_attr_destroy( &attributes ); 201 pthread_attr_destroy( &attributes );
202 return; 202 return;
203 } 203 }
204 pthread_attr_destroy( &attributes ); 204 pthread_attr_destroy( &attributes );
205} 205}
206 206
207void Thread::terminate() 207void Thread::terminate()
208{ 208{
209 AutoLock lock( d->guard ); 209 AutoLock lock( d->guard );
210 if ( !d->isRunning ) 210 if ( !d->isRunning )
211 return; 211 return;
212 212
@@ -260,41 +260,40 @@ void OnewayNotifier::notify()
260} 260}
261 261
262void OnewayNotifier::wakeUp() 262void OnewayNotifier::wakeUp()
263{ 263{
264 char c = 0; 264 char c = 0;
265 265
266 if ( ::read( m_readFd, &c, 1 ) != 1 ) 266 if ( ::read( m_readFd, &c, 1 ) != 1 )
267 return; 267 return;
268 268
269 emit awake(); 269 emit awake();
270} 270}
271 271
272ChannelMessage::ChannelMessage( int type ) 272ChannelMessage::ChannelMessage( int type, int data, const char* msg )
273 : m_type( type ), m_isCall( false ), m_replied( false ), 273 : m_type( type ), m_data( data ), m_msg( msg ),
274 m_inEventHandler( false ) 274 m_isCall( false ), m_replied( false ), m_inEventHandler( false )
275{ 275{}
276}
277 276
278ChannelMessage::~ChannelMessage() 277ChannelMessage::~ChannelMessage()
279{ 278{
280 if ( m_guard.isLocked() ) 279 if ( m_guard.isLocked() )
281 m_guard.unlock(); 280 m_guard.unlock();
282} 281}
283 282
284void ChannelMessage::reply() 283void ChannelMessage::reply()
285{ 284{
286 if ( !m_isCall ) 285 if ( !m_isCall )
287 { 286 {
288 odebug << "ChannelMessage::reply() - can't reply oneway message!" << oendl; 287 odebug << "ChannelMessage::reply() - can't reply oneway message!" << oendl;
289 return; 288 return;
290 } 289 }
291 290
292 if ( m_inEventHandler ) 291 if ( m_inEventHandler )
293 { 292 {
294 m_replied = true; 293 m_replied = true;
295 return; 294 return;
296 } 295 }
297 296
298 m_condition.wakeOne(); 297 m_condition.wakeOne();
299 m_guard.unlock(); 298 m_guard.unlock();
300} 299}