author | zecke <zecke> | 2004-09-24 15:09:56 (UTC) |
---|---|---|
committer | zecke <zecke> | 2004-09-24 15:09:56 (UTC) |
commit | 8e903cd3ea735adf066e156462602987691a4c69 (patch) (unidiff) | |
tree | b05fe7cc6d46cbacdc47fe3f0411100076bc8a52 | |
parent | 478b2ead47a09956cadfacb8f469fb2fdee5531c (diff) | |
download | opie-8e903cd3ea735adf066e156462602987691a4c69.zip opie-8e903cd3ea735adf066e156462602987691a4c69.tar.gz opie-8e903cd3ea735adf066e156462602987691a4c69.tar.bz2 |
-Emit Progress from the xine Engine to Global::statusMessage
-Change ThreadUtil to pass data and const char* among threads
-rw-r--r-- | noncore/multimedia/opieplayer2/lib.cpp | 18 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer2/lib.h | 2 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer2/threadutil.cpp | 17 | ||||
-rw-r--r-- | noncore/multimedia/opieplayer2/threadutil.h | 6 |
4 files changed, 28 insertions, 15 deletions
diff --git a/noncore/multimedia/opieplayer2/lib.cpp b/noncore/multimedia/opieplayer2/lib.cpp index 8afb318..f1b9773 100644 --- a/noncore/multimedia/opieplayer2/lib.cpp +++ b/noncore/multimedia/opieplayer2/lib.cpp | |||
@@ -36,9 +36,9 @@ | |||
36 | #include "lib.h" | 36 | #include "lib.h" |
37 | 37 | ||
38 | /* OPIE */ | 38 | /* OPIE */ |
39 | #include <opie2/odebug.h> | 39 | #include <opie2/odebug.h> |
40 | using namespace Opie::Core; | 40 | #include <qpe/global.h> |
41 | 41 | ||
42 | /* QT */ | 42 | /* QT */ |
43 | #include <qtextstream.h> | 43 | #include <qtextstream.h> |
44 | #include <qdir.h> | 44 | #include <qdir.h> |
@@ -325,21 +325,31 @@ void Lib::setWidget( XineVideoWidget *widget ) | |||
325 | 325 | ||
326 | void Lib::receiveMessage( ThreadUtil::ChannelMessage *msg, SendType sendType ) | 326 | void Lib::receiveMessage( ThreadUtil::ChannelMessage *msg, SendType sendType ) |
327 | { | 327 | { |
328 | assert( sendType == ThreadUtil::Channel::OneWay ); | 328 | assert( sendType == ThreadUtil::Channel::OneWay ); |
329 | handleXineEvent( msg->type() ); | 329 | handleXineEvent( msg->type(), msg->data(), msg->msg() ); |
330 | delete msg; | 330 | delete msg; |
331 | } | 331 | } |
332 | 332 | ||
333 | void Lib::handleXineEvent( const xine_event_t* t ) { | 333 | void Lib::handleXineEvent( const xine_event_t* t ) { |
334 | send( new ThreadUtil::ChannelMessage( t->type ), OneWay ); | 334 | int prog = -1; const char* name = 0; |
335 | if ( t->type == XINE_EVENT_PROGRESS ) { | ||
336 | xine_progress_data_t *pt = static_cast<xine_progress_data_t*>( t->data ); | ||
337 | prog = pt->percent; | ||
338 | name = pt->description; | ||
339 | } | ||
340 | |||
341 | send( new ThreadUtil::ChannelMessage( t->type, prog, name ), OneWay ); | ||
335 | } | 342 | } |
336 | 343 | ||
337 | void Lib::handleXineEvent( int type ) { | 344 | void Lib::handleXineEvent( int type, int data, const char* name ) { |
338 | assert( m_initialized ); | 345 | assert( m_initialized ); |
339 | 346 | ||
340 | if ( type == XINE_EVENT_UI_PLAYBACK_FINISHED ) { | 347 | if ( type == XINE_EVENT_UI_PLAYBACK_FINISHED ) { |
341 | emit stopped(); | 348 | emit stopped(); |
349 | }else if ( type == XINE_EVENT_PROGRESS ) { | ||
350 | QString str = name == 0 ? QString::null : QString::fromUtf8( name ); | ||
351 | Global::statusMessage( tr( "Progress: %1 %2" ).arg( name, data ) );; | ||
342 | } | 352 | } |
343 | } | 353 | } |
344 | 354 | ||
345 | 355 | ||
diff --git a/noncore/multimedia/opieplayer2/lib.h b/noncore/multimedia/opieplayer2/lib.h index 0ff14d0..dfddc2a 100644 --- a/noncore/multimedia/opieplayer2/lib.h +++ b/noncore/multimedia/opieplayer2/lib.h | |||
@@ -202,9 +202,9 @@ namespace XINE { | |||
202 | xine_ao_driver_t* m_audioOutput; | 202 | xine_ao_driver_t* m_audioOutput; |
203 | xine_event_queue_t *m_queue; | 203 | xine_event_queue_t *m_queue; |
204 | 204 | ||
205 | void handleXineEvent( const xine_event_t* t ); | 205 | void handleXineEvent( const xine_event_t* t ); |
206 | void handleXineEvent( int type ); | 206 | void handleXineEvent( int type, int data, const char* name ); |
207 | void drawFrame( uint8_t* frame, int width, int height, int bytes ); | 207 | void drawFrame( uint8_t* frame, int width, int height, int bytes ); |
208 | // C -> C++ bridge for the event system | 208 | // C -> C++ bridge for the event system |
209 | static void xine_event_handler( void* user_data, const xine_event_t* t); | 209 | static void xine_event_handler( void* user_data, const xine_event_t* t); |
210 | static void xine_display_frame( void* user_data, uint8_t* frame , | 210 | static void xine_display_frame( void* user_data, uint8_t* frame , |
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 | |||
@@ -125,9 +125,9 @@ void WaitCondition::wakeAll() | |||
125 | } | 125 | } |
126 | 126 | ||
127 | struct Thread::Data | 127 | struct 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; |
@@ -187,18 +187,18 @@ void 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 ); |
@@ -268,13 +268,12 @@ void OnewayNotifier::wakeUp() | |||
268 | 268 | ||
269 | emit awake(); | 269 | emit awake(); |
270 | } | 270 | } |
271 | 271 | ||
272 | ChannelMessage::ChannelMessage( int type ) | 272 | ChannelMessage::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 | ||
278 | ChannelMessage::~ChannelMessage() | 277 | ChannelMessage::~ChannelMessage() |
279 | { | 278 | { |
280 | if ( m_guard.isLocked() ) | 279 | if ( m_guard.isLocked() ) |
@@ -284,9 +283,9 @@ ChannelMessage::~ChannelMessage() | |||
284 | void ChannelMessage::reply() | 283 | void 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 ) |
diff --git a/noncore/multimedia/opieplayer2/threadutil.h b/noncore/multimedia/opieplayer2/threadutil.h index 2e83d3a..f97a18b 100644 --- a/noncore/multimedia/opieplayer2/threadutil.h +++ b/noncore/multimedia/opieplayer2/threadutil.h | |||
@@ -132,20 +132,24 @@ namespace ThreadUtil | |||
132 | class ChannelMessage | 132 | class ChannelMessage |
133 | { | 133 | { |
134 | friend class Channel; | 134 | friend class Channel; |
135 | public: | 135 | public: |
136 | ChannelMessage( int type = -1 ); | 136 | ChannelMessage( int type = -1, int data = -1, const char* msg = 0 ); |
137 | virtual ~ChannelMessage(); | 137 | virtual ~ChannelMessage(); |
138 | 138 | ||
139 | int type() const { return m_type; } | 139 | int type() const { return m_type; } |
140 | int data() const { return m_data; } | ||
141 | const char* msg()const { return m_msg; } | ||
140 | 142 | ||
141 | void reply(); | 143 | void reply(); |
142 | 144 | ||
143 | private: | 145 | private: |
144 | ChannelMessage( const ChannelMessage & ); | 146 | ChannelMessage( const ChannelMessage & ); |
145 | ChannelMessage &operator=( const ChannelMessage ); | 147 | ChannelMessage &operator=( const ChannelMessage ); |
146 | 148 | ||
147 | int m_type; | 149 | int m_type; |
150 | int m_data; | ||
151 | const char *m_msg; | ||
148 | bool m_isCall : 1; | 152 | bool m_isCall : 1; |
149 | bool m_replied : 1; | 153 | bool m_replied : 1; |
150 | bool m_inEventHandler : 1; | 154 | bool m_inEventHandler : 1; |
151 | Mutex m_guard; | 155 | Mutex m_guard; |