summaryrefslogtreecommitdiff
authorzecke <zecke>2004-09-24 15:09:56 (UTC)
committer zecke <zecke>2004-09-24 15:09:56 (UTC)
commit8e903cd3ea735adf066e156462602987691a4c69 (patch) (unidiff)
treeb05fe7cc6d46cbacdc47fe3f0411100076bc8a52
parent478b2ead47a09956cadfacb8f469fb2fdee5531c (diff)
downloadopie-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
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/lib.cpp18
-rw-r--r--noncore/multimedia/opieplayer2/lib.h2
-rw-r--r--noncore/multimedia/opieplayer2/threadutil.cpp17
-rw-r--r--noncore/multimedia/opieplayer2/threadutil.h6
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
@@ -37,7 +37,7 @@
37 37
38/* OPIE */ 38/* OPIE */
39#include <opie2/odebug.h> 39#include <opie2/odebug.h>
40using namespace Opie::Core; 40#include <qpe/global.h>
41 41
42/* QT */ 42/* QT */
43#include <qtextstream.h> 43#include <qtextstream.h>
@@ -326,19 +326,29 @@ void Lib::setWidget( XineVideoWidget *widget )
326void Lib::receiveMessage( ThreadUtil::ChannelMessage *msg, SendType sendType ) 326void 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
333void Lib::handleXineEvent( const xine_event_t* t ) { 333void 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
337void Lib::handleXineEvent( int type ) { 344void 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
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
@@ -203,7 +203,7 @@ namespace XINE {
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);
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
@@ -126,7 +126,7 @@ void WaitCondition::wakeAll()
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;
@@ -188,7 +188,7 @@ void Thread::start()
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
@@ -197,7 +197,7 @@ void Thread::start()
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 }
@@ -269,11 +269,10 @@ void OnewayNotifier::wakeUp()
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{
@@ -285,7 +284,7 @@ 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
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
@@ -133,10 +133,12 @@ namespace ThreadUtil
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
@@ -145,6 +147,8 @@ namespace ThreadUtil
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;